📅  最后修改于: 2023-12-03 15:33:06.761000             🧑  作者: Mango
当使用 Angular 9 来开发应用程序时,你可能会遇到 ngcc
失败的问题。 ngcc
是一个 Angular Package Compatibility Compiler,它是一个命令行工具,用于将 Angular 应用程序和依赖库中的旧的 View Engine 编译成新的 Ivy Renderer。这个问题可能是由于几个不同的因素引起的,包括版本兼容性问题和环境配置问题。在这篇文章中,我们将探讨如何诊断和解决这个问题。
当你在 Angular 9 中运行 ng build
或 ng serve
命令时,如果 ngcc
失败,你可能会遇到以下错误消息之一:
An unhandled exception occurred: Cannot read property 'split' of null
An unhandled exception occurred: Cannot read property 'length' of undefined
这些错误都指向 ngcc
命令的一个内部错误。这意味着在执行 ngcc
时发生了错误,导致它无法完成。要诊断这个问题,你可以使用 Angular CLI 的 --verbose
选项来获取更详细的信息。例如,你可以运行以下命令:
ng build --verbose
这将打印出 ngcc
命令的更详细的输出。在输出中,你可能会看到类似以下的信息:
Using package manager: 'npm'
Collecting Angular metadata and transforming with ngcc
Analyze modules
Using package manager: 'npm'
如果你在 Collecting Angular metadata and transforming with ngcc
行上看到任何错误消息,请仔细检查该行下面的信息,以查找可能的问题。
一旦你确定了 ngcc
失败的问题,就可以开始解决它了。以下是几个可能的解决方案:
在 Angular 9 中,你需要使用新版的依赖库来支持新的 Ivy Renderer。如果你的依赖库版本太旧,就可能会导致 ngcc
失败。尝试更新你的依赖库,然后重新运行 ng build
或 ng serve
命令。
在某些情况下,你可能需要在运行 ng build
或 ng serve
命令之前配置你的环境变量。例如,如果你使用的是 Windows 操作系统,你需要在命令行中设置 NG_COMPILER_HOST
环境变量。要设置环境变量,请运行以下命令:
set NG_COMPILER_HOST=local
如果你仍然无法解决 ngcc
失败的问题,你可以尝试重新安装 Angular CLI。要卸载 Angular CLI,请运行以下命令:
npm uninstall -g @angular/cli
然后,重新安装 Angular CLI:
npm install -g @angular/cli
如果你仍然无法解决问题,你可以尝试启用调试模式。这将生成更详细的日志,以帮助你诊断问题。要启用调试模式,请运行以下命令:
ng build --verbose --debug
在调试模式下运行 ng build
或 ng serve
命令后,你将看到更详细的日志输出。你可以使用这些日志来诊断问题,并找到解决方案。
ngcc
失败是 Angular 9 开发中常见的问题之一。在这篇文章中,我们讨论了如何诊断和解决这个问题。如果你遇到了 ngcc
失败的问题,我们建议你首先尝试更新你的依赖库,并配置你的环境变量。如果这些解决方案不起作用,你可以尝试卸载并重新安装 Angular CLI,或者启用调试模式以获取更详细的日志输出。