[英]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.