升级后或新项目无法构建 Angular 12 和 Webpack 5

Posted

技术标签:

【中文标题】升级后或新项目无法构建 Angular 12 和 Webpack 5【英文标题】:Angular 12 and Webpack 5 not building after upgrade or for new project 【发布时间】:2021-08-08 16:06:30 【问题描述】:

我在 Angular 11.2 和 Webpack 4.44 中有一个大型应用程序,我正在尝试分别迁移到版本 12 和 5。

首先,我将我的全局 @angular/cli 升级到 v12,然后运行 ​​ng new test-upgrade 命令来创建一个新应用。

当我在这个新应用程序中运行 ng build 而不更改它的任何内容时。但是当我安装 webpack 5.37.1 并再次运行构建时,我收到了这个错误:

[error] TypeError: 'compilation' 参数必须是 Compilation 的一个实例 在 Function.getCompilationHooks (C:\src\datahub\tdamui-angular\test-upgrade\node_modules\webpack\lib\javascript\JavascriptModulesPlugin.js:113:10) 在 C:\src\datahub\tdamui-angular\test-upgrade\node_modules\terser-webpack-plugin\dist\index.js:566:67 在 _next41(创建时的评估(C:\src\datahub\tdamui-angular\test-upgrade\node_modules\tapable\lib\HookCodeFactory.js:19:10),:77:1) 在 _next19(创建时的评估(C:\src\datahub\tdamui-angular\test-upgrade\node_modules\tapable\lib\HookCodeFactory.js:19:10),:189:1) 在 Hook.eval [as call] (eval at create (C:\src\datahub\tdamui-angular\test-upgrade\node_modules\tapable\lib\HookCodeFactory.js:19:10), :271:1) 在 Hook.CALL_DELEGATE [as _call] (C:\src\datahub\tdamui-angular\test-upgrade\node_modules\tapable\lib\Hook.js:14:14) 在 Compiler.newCompilation (C:\src\datahub\tdamui-angular\test-upgrade\node_modules@angular-devkit\build-angular\node_modules\webpack\lib\Compiler.js:1031:26) 在 C:\src\datahub\tdamui-angular\test-upgrade\node_modules@angular-devkit\build-angular\node_modules\webpack\lib\Compiler.js:1073:29 在 Hook.eval [as callAsync] (创建时的 eval (C:\src\datahub\tdamui-angular\test-upgrade\node_modules\tapable\lib\HookCodeFactory.js:33:10), :22:1) 在 Hook.CALL_ASYNC_DELEGATE [as _callAsync] (C:\src\datahub\tdamui-angular\test-upgrade\node_modules\tapable\lib\Hook.js:18:14)

请记住,这是一个由 cli 生成的新 Angular 项目。我所做的只是安装第 5 版的 webpack。

所以我尝试安装第 4 版的 webpack,但我得到了其他错误。我不会发布这些,因为我需要 webpack v5 才能工作。

一旦我能解决这个问题,我就可以着手修复我的大型应用程序。

有人知道上述错误吗?或者任何人都可以复制,如果他们:

    安装@angular/cli v12 使用 ng new 创建一个新应用 运行 ng build(这应该可以) 安装 webpack v5 运行 ng build(出现上述错误) 移除 webpack 运行 ng build(会得到一个错误提示 webpack 模块丢失)

在这一点上,我无法让 Angular 12 与 webpack 4 或 5 一起工作,所以它完全坏了,但我知道这不可能。

我在 Windows 10 上,使用节点 14.17。

【问题讨论】:

【参考方案1】:

你有没有试过不安装 webpack 而是让 ng12 默认 webpack 5 处理事情?

那将是(从上面的列表中):

    安装@angular/cli v12 使用 ng new 创建一个新应用 运行 ng build(这应该可以) 完成

【讨论】:

以上是关于升级后或新项目无法构建 Angular 12 和 Webpack 5的主要内容,如果未能解决你的问题,请参考以下文章

在构建后或部署期间在 ngsw 中重新生成内容哈希

Angular 10:无法编写参考

构建 Angular 项目导致内存不足

更新到 Angular 10 后,如果没有“new”,就无法调用类构造函数 UpgradeComponent

升级到 RC5 后,Angular2 通用错误找不到模块“@angular/compiler/src/template_parser”

完美升级 AngularJS 至 Angular