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。
哭小写
我不确定这是否与 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。
哭小写