Node.js 找不到具有停靠节点应用程序的module express验证程序

Node.js 找不到具有停靠节点应用程序的module express验证程序,node.js,docker,express,express-validator,Node.js,Docker,Express,Express Validator,我已在我的节点应用程序中使用npm安装--save express validator安装了express validator,但收到以下错误: module.js:478 express-mongo | throw err; express-mongo | ^ express-mongo | express-mongo | Error: Cannot find module 'express-validator' express-mongo | at Function

我已在我的节点应用程序中使用
npm安装--save express validator
安装了
express validator
,但收到以下错误:

module.js:478
express-mongo |     throw err;
express-mongo |     ^
express-mongo | 
express-mongo | Error: Cannot find module 'express-validator'
express-mongo |     at Function.Module._resolveFilename (module.js:476:15)
express-mongo |     at Function.Module._load (module.js:424:25)
express-mongo |     at Module.require (module.js:504:17)
express-mongo |     at require (internal/module.js:20:19)
express-mongo |     at Object.<anonymous> (/app/validation/validator.js:1:98)
express-mongo |     at Module._compile (module.js:577:32)
express-mongo |     at Object.Module._extensions..js (module.js:586:10)
express-mongo |     at Module.load (module.js:494:32)
express-mongo |     at tryModuleLoad (module.js:453:12)
express-mongo |     at Function.Module._load (module.js:445:3)
express-mongo |     at Module.require (module.js:504:17)
express-mongo |     at require (internal/module.js:20:19)
express-mongo |     at Object.<anonymous> (/app/routes/user-geolocation.route.js:3:43)
express-mongo |     at Module._compile (module.js:577:32)
express-mongo |     at Object.Module._extensions..js (module.js:586:10)
express-mongo |     at Module.load (module.js:494:32)
这是我的Dockerfile:

FROM node:boron
WORKDIR /app
COPY package*.json ./
RUN npm install
RUN npm install pm2 -g
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
在应用程序中,我只是要求如下:

const { body, validationResult } = require('express-validator')
这是我的
docker composer.yml
文件:

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: .docker/services/app/Dockerfile
    container_name: express-mongo
    restart: always
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    links:
      - db
    depends_on:
      - db
  db:
    container_name: mongo
    image: mongo
    ports:
      - "27017:27017"
    volumes:
      - ./data:/data/db

你知道这里的问题是什么吗?

在Dockerfile中试试这个

FROM node:10.13-alpine
ENV NODE_ENV production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production --silent && mv node_modules ../
COPY . .
EXPOSE 5000
CMD npm start

有一种常见的节点/Docker模式,可以主动阻止Docker在您的
package.json
文件中看到任何更新。你是如何运行容器的?@DavidMaze我正在运行
docker compose-up--build
。我现在正在尝试从
package.json
文件中删除一些不太重要的依赖项,但它确实重新运行了
npm install
,并且正在安装
express validator
。请将您的
docker compose.yml
文件添加到问题中。如果您的
node\u modules
目录有
volumes:
声明,则直接导致此问题。为什么
node\u modules
卷声明会导致此问题?抱歉,如果这是一个愚蠢的问题,我是docker的新手。这是一个声明,该目录包含关键用户数据,这些数据必须在容器运行期间保留,而不是修改。与流行的观点相反,这不是一种绕过绑定挂载父目录的方法
FROM node:10.13-alpine
ENV NODE_ENV production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production --silent && mv node_modules ../
COPY . .
EXPOSE 5000
CMD npm start