angular - Docker with netcore + angular 10 构建失败
问题描述
我有一个 Angular 10 前端的 netcore 应用程序。我的目标是容器化应用程序。我已经创建了 docker 文件,但是在构建过程中,出现以下错误:
internal/modules/cjs/loader.js:883
throw err;
^
EXEC : error : Cannot find module '/src/Web/ClientApp/node_modules/@angular/cli/bin/ng' [/src/Web/Web.csproj]
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
at Function.Module._load (internal/modules/cjs/loader.js:725:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
我曾尝试在容器中将 angular/cli 作为全局安装,但没有帮助。同样将 angular/cli 从依赖项更改为 devDependency 并没有改变任何东西。从 wsl 运行发布命令有效。还运行 npm build -- --prod 没有任何问题。
该问题似乎仅与docker有关。
我的 dockerfile 看起来像这样:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_14.x | bash \
&& apt-get install nodejs -yq
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_14.x | bash \
&& apt-get install nodejs -yq
WORKDIR /src
COPY [SOMEOTHER Projects]
COPY ["Web/Web.csproj", "Web/"]
RUN dotnet restore "Web/Web.csproj"
COPY . .
WORKDIR "/src/Web"
RUN dotnet build "Web.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Web.csproj" -c Release -o /app/publish
FROM base as final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Web.dll"]
package.json 看起来像这样:
{
"name": "web",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "echo Starting... && ng serve",
"build": "ng build",
"build:ssr": "ng run Web:server:dev",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "10.1.6",
"@angular/compiler": "10.1.6",
"@angular/core": "10.1.6",
"@angular/forms": "10.1.6",
"@angular/platform-browser": "10.1.6",
"@angular/platform-browser-dynamic": "10.1.6",
"@angular/router": "10.1.6",
"@nguniversal/module-map-ngfactory-loader": "8.2.6",
"aspnet-prerendering": "^3.0.1",
"bootstrap": "^4.5.3",
"core-js": "^3.6.5",
"jquery": "^3.5.1",
"@angular/cdk": "^10.2.5",
"@angular/platform-server": "10.1.6",
"@fortawesome/angular-fontawesome": "^0.7.0",
"@fortawesome/fontawesome-svg-core": "^1.2.32",
"@fortawesome/free-solid-svg-icons": "^5.15.1",
"font-awesome": "^4.7.0",
"oidc-client": "^1.10.1",
"popper.js": "^1.16.1",
"primeng": "^10.0.3",
"rxjs": "^6.6.3"
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.1001.7",
"@angular/cli": "^10.1.7",
"@angular/common": "10.1.6",
"@angular/compiler-cli": "^10.2.2",
"@angular/language-service": "^10.1.6",
"@types/jasmine": "~3.5.14",
"@types/jasminewd2": "~2.0.8",
"@types/node": "~14.11.8",
"codelyzer": "^6.0.1",
"jasmine-core": "~3.6.0",
"jasmine-spec-reporter": "~6.0.0",
"karma": "^5.2.3",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~3.0.3",
"karma-jasmine": "~4.0.1",
"karma-jasmine-html-reporter": "^1.5.4",
"typescript": "4.0.3",
"zone.js": "^0.10.3"
},
"optionalDependencies": {
"node-sass": "^4.14.1",
"protractor": "~7.0.0",
"ts-node": "~9.0.0",
"tslint": "~5.20.1"
}
}
有人解释为什么会发生这种情况以及如何解决?
解决方案
推荐阅读
- java - 如何更改回收站视图中的字体?
- angular - 打开对话框未正确打开材料角度 11
- matplotlib - 更新散点图的标记形状
- java - mysql 中的 Hive Metatstore(通过 jdbc)失败 - NoClassDefFoundError JdbcUriParseException
- html - 无法将 PrimeNG 样式应用于非 PrimeNG 组件
- node.js - Express + Mocha + Chai 错误:服务器未在监听
- linux - 从 Linux 后台运行的 SSH 命令获取退出代码(Ksh 脚本)
- sql-server - 如何在 typeorm 中使用 SQL Server 应用
- matlab - 当我没有 Matlab 直方图对象时,Matlab 2020a 中的直方图重组
- azure-active-directory - 尝试 Azure AD IDP 发起的 SSO 时出现 InvalidRequesMessage 错误 - Keycloak