[英]Cannot find module error for a node js app running in a docker environment
[英]How to fix docker container running 'cannot find module' error?
我是 docker 新手,正在尝试将我的 MERRN 堆栈应用程序移至 AWS。 我想在移动它之前对其进行 dockerize。 但是,当我在Medium - Docker with MERN stack 上学习这个在线教程时,我开始使用docker run -p 5000:5000 -d backend
启动我的 docker 镜像,并且在 VS 代码中出现错误。 我不确定这个错误是什么意思,但我认为它与我的文件夹管理有关。
我将附上我的文件夹结构的片段以及我使用的 docker 文件。 所以我的主要问题是我正在尝试设置所有内容,但这个问题阻碍了我的进步。 所以任何帮助将不胜感激。 谢谢
Docker 文件:
FROM node:10.19.0
# Create app directory
WORKDIR /usr/src/app
# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./
# Bundle app source
COPY . .
# Install app dependencies
RUN npm install
EXPOSE 5000
CMD [ "npm", "start" ]
错误:
> exodus@1.0.0 start /usr/src/app
> node server
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module './routes/api/Email'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/usr/src/app/server.js:24:19)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! exodus@1.0.0 start: `node server`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the exodus@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-10-28T20_13_53_160Z-debug.log
Search...
Stick to bottom
你的 Dockerfile 看起来没问题,你的项目结构也是如此。 我认为 docker 镜像由于某种原因有问题并且丢失了文件。
您可以尝试再次构建映像吗? COPY 步骤是否正确执行?
// Make sure to execute this in the project root.
docker build -t backend .
如果错误仍然存在,请使用 bash 或 sh 登录到 docker 容器并尝试使用npm start
手动启动节点服务器:
docker run -p 5000:5000 -d backend /bin/bash
or
docker run -p 5000:5000 -d backend /bin/sh
登录 docker 容器也将有助于调查某些文件是否未传输。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.