2016-08-15 83 views
2

我试图编译我的程序时使用ngc编译器。过去我没有使用过ngc,但是我在博客上追踪了几个例子,使它看起来相当简单。我的代码在浏览器中运行良好,打字稿编译器编译得很好,但是当我使用ngc时出现以下错误。使用Angular2的AoT ngc编译器获取TypeError与RC5

TypeError: Cannot read property 'kind' of undefined 
at maybeGetSimpleFunction (node_modules\@angular\tsc-wrapped\src\collector.js:28:41) 
at node_modules\@angular\tsc-wrapped\src\collector.js:227:41 
at visitEachNode (node_modules\typescript\lib\typescript.js:8154:30) 
at Object.forEachChild (node_modules\typescript\lib\typescript.js:8314:24) 
at MetadataCollector.getMetadata (node_modules\@angular\tsc-wrapped\src\collector.js:189:12) 
at ReflectorHost.getMetadataFor (node_modules\@angular\compiler-cli\src\reflector_host.js:217:43) 
at StaticReflector.getModuleMetadata (node_modules\@angular\compiler-cli\src\static_reflector.js:478:40) 
at CodeGenerator.readFileMetadata (node_modules\@angular\compiler-cli\src\codegen.js:33:51) 
at node_modules\@angular\compiler-cli\src\codegen.js:91:74 
at Array.map (native) 
Compilation failed 

任何帮助表示赞赏。

+0

你跑哪个ngc命令?你看到每个组件和模块的NgFactory文件吗?你能分享你的main.ts文件吗? – Sanket

+0

ngc -p ./src其中src是我的htm,tsconfig和angular2应用程序所在的地方。所以基本上运行ngc与我用于tsc的选项相同。没有生成工厂文件。 – wiredprogrammer

+0

我的打字稿和javascript文件并排居住。我错误地认为ngc只关心打字稿文件? – wiredprogrammer

回答

1

这篇文章https://stackoverflow.com/a/39541250/2786847帮助我解决了同样的问题。我不得不将export default function() {}更改为export function myFunction() {}

+0

感谢您的回复。几周前我已经找到了这篇文章。我推荐这篇文章供读者阅读,以供任何人试图让他们的代码对AoT编译器的静态分析友好。 https://medium.com/@isaacplmann/making-your-angular-2-library-statically-analyzable-for-aot-e1c6f3ebedd5#.2p5ul5txt约翰帕帕已经表示,他会提出一个Gist的文章也推荐标准编码以帮助AoT编译。 – wiredprogrammer