[英]Can't find module error when building docker for NodeJS app
我为节点应用程序编写了一个 DockerFile。 这是泊坞窗文件:
FROM node:10.15.0
COPY frontend/ frontend/
WORKDIR frontend/
RUN npm install
RUN npm start
当我尝试构建此 Dockerfile 时,出现此错误: ERROR in ./app/main.js Module not found: Error: Can't resolve './ResetPwd' in '/frontend/app'
所以我在 Dockerfile 中添加了RUN ls
& RUN ls /app
。 两个文件都在! 我不熟悉 NodeJS 和它的构建过程。 有人可以帮我解决这个问题吗?
要点:我不确定它是否有帮助,但我也在使用 Webpack。
问题是我们的前端开发人员认为节点导入不区分大小写并且他使用的是windows。 我试图在 mac 上运行 Dockerfile,这就是它找不到模块的原因。 模块名称已重置通过!
这个问题救了我!
希望这对其他人有帮助。
我有一个 angular 应用程序,我试图使用 docker 将它容器化。
我在 Windows 机器上构建应用程序。 我试图在 linux 容器中构建它。
该应用程序在我的 Windows 机器上构建良好,但在 docker 环境中失败并出现以下错误:
ERROR in folder1/folder2/name.component.ts: - error TS2307: Cannot find module '../../../folder1/File.name'.
import { Interface1} from '../../../folder1/File.name';
找不到模块“../../../node_modules/rxjs/Observable.d.ts”。 从 'rxjs/observable' 导入 { Observable };
这让我发疯。
看到这个问题,一开始没想到是这么回事。 第二天,我决定在 linux 环境中构建相同的应用程序,只是为了确保。 使用 WSL 2 和吊杆:
真正的问题!
ERROR错误TS1149:文件名“/../../node_modules/rxjs/observable.d.ts”从已经包含文件名“/../../node_modules/rxjs/Observable.d.ts”不同之处仅在外壳中。
6 import { Observable } from 'rxjs/observable';
所以这是一个外壳问题。 我纠正了外壳,它构建得很好!
我不能说这是否会奏效,因为我不知道npm start
真的触发了 webpack,但如果不是,你将不得不在COPY frontend /
行之后添加一个额外的RUN
行
这里有一些问题,请尝试使用此 docker 文件代替
FROM node:10.15.0
# Copy dependency files and install packages
WORKDIR frontend
COPY frontend/package.* .
RUN npm install
# Copy src down and other stuff
COPY frontend /
# cd to the file with the package.json
WORKDIR /appDir/frontend
# Command that executes when container starts up
CMD ["npm", "start"]
确保您还更新了 .dockerignore 以包含 node_modules。 您必须使用以下命令构建和运行容器。
docker build -t frontendApp .
docker run -p 8080:8080 frontendApp
-p 和 8080:8080 与将内部端口暴露给外部世界有关,以便您可以在浏览器中查看它,只需将其更改为 web pack 用于显示您的内容的任何端口即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.