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