首页 > 解决方案 > Node & Docker,安装 Node 模块后无法运行脚本

问题描述

真的很难在这里找出问题。我正在尝试在我的工作站上为开发人员容器化一个 WordPress 站点。目的。(免责声明:对 Docker 来说有点新,目前在几个 Laravel 项目中出于相同目的使用它,但尚未将其集成到生产中)。

这是我的相关部分docker-compose.yml

version: "3"

services:
  ...
  npm:
    build:
      context: .
      dockerfile: ./docker/node/Dockerfile
    container_name: npm
    volumes:
      - ./:/var/www/html
      - /var/www/html/docker/
    working_dir: /var/www/html/wp-content/themes/my-cust-theme
    depends_on:
      - wordpress
    entrypoint: ["npm", "--no-bin-links"]
    networks:
      - wp-net
  ...

networks:
  wp-net:

这是相关 Dockerfile 的内容,(我在这里有更多内容,但为了调试它已减少到此):

FROM node:12.17.0-alpine3.9
RUN apk --update --no-cache --virtual build-dependencies add \
  git \ 
  libtool \
  python2 \
  nasm \
  libpng-dev \
  autoconf \
  gcc \
  g++ \
  automake \
  make 

我知道这里最好使用多阶段构建,或者这里提到的其他方法。只是在优化容器之前尝试让 Node 构建脚本正常运行。

构建容器后:

docker-compose up -d --build

我跑:

docker-compose run --rm npm install

并且这些软件包似乎安装成功。事实上,安装后运行docker-compose run --rm npm list --depth 0给了我预期的输出。我可以看到我的所有软件包package.json都已安装。

我的项目的脚本如下:

"scripts": {
    "debug": " webpack-dev-server --config webpack.dev.js",
    "dev": "webpack-dashboard -- webpack-dev-server --config webpack.dev.js",
    "production": "NODE_ENV=production npx webpack --config webpack.prod.js --progress --hide-modules"
  }

在这一点上我完全迷失的是:如果我跑

docker-compose run --rm npm run dev

输出类似于:

Creating some-new-wp-site_npm_run ... done

> some-new-wp-site@1.0.0 dev /var/www/html/wp-content/themes/my-cust-theme
> webpack-dashboard -- webpack-dev-server --config webpack.dev.js

sh: webpack-dashboard: not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! some-new-wp-site@1.0.0 dev: `webpack-dashboard -- webpack-dev-server --config webpack.dev.js`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the some-new-wp-site@1.0.0 dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-01-23T15_51_28_095Z-debug

我尝试运行docker-compose down -v --rmi all并重复这个过程,它产生了相同的结果。

标签: node.jsdocker

解决方案


没有npm err log我只能猜测问题出在哪里。可能 npm-cli 无法找到webpack-dashboardandwebpack-dev-server命令,因为它没有全局安装。

尝试将webpack-dashboardand添加webpack-dev-server到 package.json 中的脚本中。

"scripts": {
    ... your scripts,
    "webpack-dashboard": "webpack-dashboard",
    "webpack-dev-server": "webpack-dev-server"
  }

推荐阅读