docker中的Node.js错误

我使用节点:最新的形象。 并获取ModuleBuildError: Module build failed: ModuleBuildError: Module build failed: Error: spawn /hobover_web_client/node_modules/pngquant-bin/vendor/pngquant ENOENT
Dockerfile

 FROM node:latest # set working directory RUN mkdir -p /hobover_web_client WORKDIR /hobover_web_client ENV NPM_CONFIG_LOGLEVEL=warn COPY package.json yarn.lock /hobover_web_client/ # install app dependencies RUN rm -rf node_modules/ && yarn install --ignore-scripts && yarn global add babel babel-cli webpack nodemon pngquant optipng recjpeg ADD . /hobover_web_client 

在docker-compose.yml中

 version: '2' hobover_web_client: container_name: hobover_web_client build: ./hobover_web_client command: yarn start ports: - "8080:8080" volumes: - ./hobover_web_client:/hobover_web_client - /hobover_web_client/node_modules 

build立成功的工作,但最多导致一个错误。 如果没有docker工作,我该如何解决它?

你的问题是应用程序和node_modules在同一目录中的挂载。 当你在docker-compose下面使用

  - ./hobover_web_client:/hobover_web_client 

你掩盖了现有的node_modules 。 所以你需要使用NODE_PATH来重新定位你的包。 将您的Dockerfile更改为下面

 FROM node:latest # set working directory RUN mkdir -p /hobover_web_client /node_modules WORKDIR /hobover_web_client ENV NPM_CONFIG_LOGLEVEL=warn NODE_PATH=/node_moudles COPY package.json yarn.lock /hobover_web_client/ # install app dependencies RUN yarn install --ignore-scripts && yarn global add babel babel-cli webpack nodemon pngquant optipng recjpeg ADD . /hobover_web_client 

改变你的写作到下面

 version: '2' hobover_web_client: container_name: hobover_web_client build: ./hobover_web_client command: yarn start ports: - "8080:8080" volumes: - ./hobover_web_client:/hobover_web_client - /node_modules 

所以现在你的/node_modules转到一个匿名的卷,你这样做不需要,可以删除,因为path是在不同的文件夹