我使用了一个angular-cli的分支,它编译了多个模块https://www.npmjs.com/package/hydra-ngtools-webpack一切都按照预期的方式工作,但是当我在JIT中编译时,我得到一个错误..
无法读取未定义的推送
我将错误跟踪到@ ngtools / webpack文件夹下的angular_compiler_plugin.js中的这一行。正如您所看到的,lazyRoutes没有给出初始值。
_listLazyRoutesFromProgram() {
let lazyRoutes;
if (this._JitMode) {
if (!this.entryModule) {
return {};
}
const ngProgram = compiler_cli_1.createProgram({
rootNames: this._rootNames,
options: Object.assign({}, this._compilerOptions, { genDir: '', collectAllErrors: true }),
host: this._compilerHost,
});
this.entryModule.forEach((entryModule) => {
ngProgram.listLazyRoutes(entryModule.path + '#' + entryModule.className).forEach((lazyRoute) => {
lazyRoutes.push(lazyRoute);
});
});
}
如果我像这样初始化它
let lazyRoutes=[];
构建编译没有错误。我已经联系了作者提供了这个包的源代码,因此我可以提出拉取请求并仍在等待他的回复。有没有办法告诉编译器不要抱怨这个未初始化的变量并且是宽容的。否则我将不得不在每个npm安装上编辑这一行,这是不理想的。
您可以为TS Lintt添加一个禁用语句,如下所示:
_listLazyRoutesFromProgram() {
// tslint:disable-next-line:RULENAME
let lazyRoutes;
if (this._JitMode)
...
你仍然需要将它添加到代码中,所以可能不会真正为你节省太多。