node.js - 在 docker 容器上运行 nodejs 应用程序会给出 "Error: Cannot find module '/usr/src/app/nodemon' "

标签 node.js docker npm docker-compose dockerfile

这是我的 Dockerfile,它位于 nodejs 应用程序的根目录。

# Build from  LTS version of node (version 12)
FROM node:12

# Create app directory
RUN mkdir -p /usr/src/app

# Define app diretory inside image
WORKDIR /usr/src/app

# package.json AND package-lock.json are copied where available 
COPY package*.json /usr/src/app/

# install modules
RUN npm install

# Bundle app source
COPY . /usr/src/app

# Bind app to port 3000
EXPOSE 3000

# Command to run app
CMD [ "nodemon", "./bin/www" ]
这是我的docker-compose.yml文件
version: '2'
services:
  mongo:
    container_name: mongo
    image: 'mongo:3.4.1'
    ports:
      - "27017:27017" 
  backend-app:
    container_name: school-backend
    restart: always
    build: ./server
    ports:
      - "3000:3000"
  frontend-app:
    container_name: angular-frontend
    restart: always
    build: ./angular-app
    ports:
      - "4200:4200"
我执行命令docker-compose up然后我得到这个错误
school-backend  | Error: Cannot find module '/usr/src/app/nodemon'
school-backend  |     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:966:15)
school-backend  |     at Function.Module._load (internal/modules/cjs/loader.js:842:27)
school-backend  |     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
school-backend  |     at internal/main/run_main_module.js:17:47 {
school-backend  |   code: 'MODULE_NOT_FOUND',
school-backend  |   requireStack: []
school-backend  | }
在 Dockerfile 中,我复制了 package.json到工作目录/usr/src/app\ .
然后我做npm install它将安装 nodemon,因为它在 package.json 中声明
但是,为什么模块不存在?

最佳答案

那时它不是全局安装的。
在这种情况下,您必须调用 node_modules 中的 nodemon bin:./node_modules/nodemon/bin/nodemon.js .

关于node.js - 在 docker 容器上运行 nodejs 应用程序会给出 "Error: Cannot find module '/usr/src/app/nodemon' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62977815/

相关文章:

从C程序连接到node.js websocket服务器

docker - 如何将 docker 卷挂载到网络上的文件夹

javascript - Vue 未定义,即使已导入

npm - webpack 4 是否重复删除了已经被 webpack 捆绑的 npm 包?

javascript - 模块构建失败: SyntaxError: Unexpected token ' in JSON at position 0

node.js - NodeJS - 如何安全地存储数据库的 ip、用户名和密码?

javascript - 如何在 ember.js 中包含特定的 js 文件

docker - GITLAB-CI 管道无法登录到不安全的注册表

docker - 基于网络利用率或每秒请求数的 Kubernetes 扩展

node.js - gulp 任务根据文件名动态创建文件夹