【发布时间】:2022-01-31 03:07:26
【问题描述】:
我使用Docker 开发了一个Nodejs 应用程序,但是当我运行该应用程序时出现错误:
module.js:550
throw err;
^
Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/usr/src/app/index.js:1:81)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! db-on-docker@1.0.0 start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the db-on-docker@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-01-30T05_34_13_500Z-debug.log
以下是我的文件:
DockerFile 存在于 web 文件夹中:
FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 9000
CMD ["npm","start"]
CMD tail -f /dev/null
以下是我的docker-compose.yml 文件存在于我的root project folder 中:
version: '3'
services:
db:
container_name: db
image: mysql:5.7
volumes:
- "./data/mysql:/var/lib/mysql:rw"
environment:
MYSQL_DATABASE: db
MYSQL_ROOT_PASSWORD: 123456
MYSQL_USER: admin
MYSQL_PASSWORD: 123456
DATABASE_HOST: localhost
restart: always
web:
container_name: web
image: node:8
volumes:
- ./web:/usr/src/app
working_dir: /usr/src/app
depends_on:
- db
restart: on-failure
command: "tail -f /dev/null"
environment: ["project=${project}", "type=${type}"]
我做了以下事情:
-
docker-compose build -d加载所有图片。 -
docker-comoise up -d调出所有图像并使用docker-compose ps确认相同。 - 然后使用命令
docker-compose exec web sh -c "project=myproject type=New npm start"运行应用程序
当我运行第三步时,我得到了上面提供的错误。当我开发应用程序时,这是以前工作的。现在我试图在另一个系统中运行相同的应用程序,但收到此错误。无法理解可能出现的问题。
我已经添加了express using npm install,所以我猜不是因为这个,而是因为npm ERR! Failed at the db-on-docker@1.0.0 start script. 行,我尝试使用npm install --save express 安装express,删除了node_modules 文件夹。尝试了npm install,但似乎没有什么对我有用。
有人可以告诉我我需要做什么吗?
【问题讨论】:
-
执行 npm install -g express
-
如何定义“启动”脚本?要进行测试,请尝试:CMD npm start
-
@Satya 非常感谢您的回复。我试过了,但仍然遇到同样的问题。能否请您提出一些替代方案。
-
@a_e 非常感谢您的回复。实际上,代码是由另一位开发人员开发的,所以我不完全确定
start script是如何定义的,因为我是docker and node js. I tried runningnpm start 的新手,但这不起作用并出现错误missing script "start"。你能帮我解决这个问题吗? -
因为没有启动脚本,那么就从:CMD node index.js开始
标签: node.js docker npm docker-compose dockerfile