`ng build --prod` 失败并出现 `ERROR in TypeError: Cannot read property 'version' of null`
Posted
技术标签:
【中文标题】`ng build --prod` 失败并出现 `ERROR in TypeError: Cannot read property \'version\' of null`【英文标题】:`ng build --prod` fails with `ERROR in TypeError: Cannot read property 'version' of null``ng build --prod` 失败并出现 `ERROR in TypeError: Cannot read property 'version' of null` 【发布时间】:2018-07-28 13:27:50 【问题描述】:我无法使用--prod
标志成功构建我的项目[否则它构建得很好]。我可以暂时将 maxMetadata &&
添加到 if 语句中,在该语句中发生空值检查并通过该点(metadata_reader.js 第 66 行),然后我得到与生产分发相关的“真实”问题列表;但我想先了解一下为什么会发生这种情况,看看是否有永久修复。我设法找到了类似的问题,并尝试了很多其他人尝试过的方法,但似乎不是完全相同的问题,还没有找到解决方案。
版本:
Angular CLI: 1.6.5
Node: 8.9.4
OS: win32 x64
Angular: 5.2.3
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
@angular/cli: 1.6.5
@angular-devkit/build-optimizer: 0.0.42
@angular-devkit/core: 0.0.29
@angular-devkit/schematics: 0.0.52
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.5
@schematics/angular: 0.1.17
typescript: 2.7.1
webpack: 3.10.0
完整的堆栈跟踪:
ERROR in TypeError: Cannot read property 'version' of null
at readMetadataFile (C:\git\screenings-plus\node_modules\@angular\compiler-cli\src\transformers\metadata_reader.js:66:29)
at Object.readMetadata (C:\git\screenings-plus\node_modules\@angular\compiler-cli\src\transformers\metadata_reader.js:35:25)
at TsCompilerAotCompilerTypeCheckHostAdapter.getMetadataFor (C:\git\screenings-plus\node_modules\@angular\compiler-cli\src\transformers\compiler_host.js:425:34)
at StaticSymbolResolver.getModuleMetadata (C:\git\screenings-plus\node_modules\@angular\compiler\bundles\compiler.umd.js:29726:62)
at StaticSymbolResolver.hasDecorators (C:\git\screenings-plus\node_modules\@angular\compiler\bundles\compiler.umd.js:29426:46)
at analyzeFile (C:\git\screenings-plus\node_modules\@angular\compiler\bundles\compiler.umd.js:31299:63)
at AotCompiler._analyzeFile (C:\git\screenings-plus\node_modules\@angular\compiler\bundles\compiler.umd.js:30509:17)
at AotCompiler.findGeneratedFileNames (C:\git\screenings-plus\node_modules\@angular\compiler\bundles\compiler.umd.js:30525:42)
at Object.findGeneratedFileNames (C:\git\screenings-plus\node_modules\@angular\compiler-cli\src\transformers\program.js:397:82)
at TsCompilerAotCompilerTypeCheckHostAdapter.getSourceFile (C:\git\screenings-plus\node_modules\@angular\compiler-cli\src\transformers\compiler_host.js:337:55)
at findSourceFile (C:\git\screenings-plus\node_modules\typescript\lib\typescript.js:74915:29)
at args (C:\git\screenings-plus\node_modules\typescript\lib\typescript.js:74852:85)
at getSourceFileFromReferenceWorker (C:\git\screenings-plus\node_modules\typescript\lib\typescript.js:74825:34)
at processSourceFile (C:\git\screenings-plus\node_modules\typescript\lib\typescript.js:74852:13)
at processRootFile (C:\git\screenings-plus\node_modules\typescript\lib\typescript.js:74706:13)
at C:\git\screenings-plus\node_modules\typescript\lib\typescript.js:73855:60
【问题讨论】:
【参考方案1】:为了解决这个问题,我在 metadata_reader.js 的第 66 行放置了一个console.log(maxMetadata.version);
并能够找到问题所在,结果是元数据文件 [*.metadata.json]在我的项目中。它有[null]
,对于所有当前版本的Angular,它需要是[]
。更改此设置后,我能够获得正常的 ng build --prod
构建读数。
【讨论】:
以上是关于`ng build --prod` 失败并出现 `ERROR in TypeError: Cannot read property 'version' of null`的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试在 app-module 中导入 javascript 文件时,ng build --prod 失败
在 ng build --prod 之后,为啥我在 main.js:1 和 polyfills.js:1 中出现错误,而不是在我创建的组件中,如何撤消这个?
角度2,在ng build --prod之后,ui-router停止工作