首页 > 解决方案 > 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"
  }
}

有人解释为什么会发生这种情况以及如何解决?

标签: angulardocker.net-core

解决方案


推荐阅读