ng 构建在 docker (ubuntu) 上失败(找不到模块)但在 windows 10 上有效

ng build fails (cannot find module) on docker (ubuntu) but works on windows 10

我不确定这是否与 docker、ubuntu 或 node/npm 有关,所以这里是我可以提供的所有详细信息。

我知道有这个模块错误的原因,但没有任何解释为什么它可以在各种 windows 机器上工作,但不能在 Ubuntu 上的 docker 上工作。

错误是:

ERROR in src/app/app-routing.module.ts:110:51 - error TS2307: Cannot find module './tools/tools.module'.

110         path: 'tools', loadChildren: () => import('./tools/tools.module').then(m => m.ToolsModule)

而 app-routing.module.ts 中的违规行是:

const routes: Routes = [
  {
    path: '',
    component: DefaultComponent,
    canActivate: [AuthGuard],
    children: [
      {
        // ... various child routes
      },
      {
        // fails here:
        path: 'tools', loadChildren: () => import('./tools/tools.module').then(m => m.ToolsModule)
      },

但是, 这在 Windows 10 x64 本地或 TeamCity 上运行良好。那么现在具体的机器详情:

失败发生在 AWS CodeBuild 上的 docker。我的构建规范是

version: 0.2

phases:
  install:
    runtime-versions:
      dotnet: 3.1
      nodejs: 14.x
    commands:
      - npm install -g @angular/cli@9.1.13
  build:
    commands:
      - echo Entered the build phase...
      - echo Build started on `date`
      - cd src
      - dotnet restore
      - dotnet build
      - cd Web
      - npm install
      - ng build --verbose --prod
      - cd ..
      - dotnet test
      - echo Entered the post_build phase...
      - echo Build completed on `date`

docker 和我本地 (Windows) 上的节点是 v14.15.4(带有 npm 6.14.10)。

我正在使用我认为是 Ubuntu 18.04.

的标准 AWS CodeBuild 映像

任何指点将不胜感激,谢谢!

更新 我升级到 Angular 10.2;包括现在为 10.2.1 的 CLI;删除了 rxjs-compat 和一堆其他升级建议;但我仍然遇到相同的 Cannot find module 错误。

哦,因为大声疾呼...

区分大小写!

工具模块已提交到文件夹 Tools 中的 git,但 app-routing.module.ts 正在引用 tools;这当然适用于 Windows,但不适用于 Linux。

哭小写