我为节点应用程序编写了一个DockerFile。这是docker文件:
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。
答案 0 :(得分:2)
这个问题救了我!
希望这对其他人有帮助。
我有一个角度应用程序,我试图使用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和吊杆:
真正的问题!
错误TS1149中的错误:文件名'/../../node_modules/rxjs/observable.d.ts'与已经包含的文件名'/../../node_modules/rxjs/Observable.d不同。 ts'仅在大小写中。
6从'rxjs / observable'导入{Observable};
所以这是一个套管问题。我更正了套管,它的构造很好!
答案 1 :(得分:0)
我不确定这是否行得通,因为我不知道npm start
是否实际触发了webpack,但是如果不触发,则必须在该行之后添加额外的RUN
行COPY frontend /
行
这里有一些问题,请尝试使用此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用于显示内容的任何端口即可。
答案 2 :(得分:0)
问题是我们的前端开发人员认为节点导入不区分大小写,并且他使用的是Windows。我试图在Mac上运行Dockerfile,这就是为什么它找不到模块的原因。模块名称为resetPass!
答案 3 :(得分:0)
我不得不重建破坏性软件包,就像在this issue for node-sass
中一样命令为npm rebuild <package-name>
对我来说,这是npm rebuild node-sass