运行业力单元测试时遇到同样的问题。这是我的发现
我的一个单元测试会将数据写入json文件。我收到此错误
ERROR in TypeError: Cannot read property 'length' of undefined
at createSourceFile (...\node_modules\typescript\lib\typescript.js:15460:109)
at parseSourceFileWorker (...\node_modules\typescript\lib\typescript.js:15389:26)
at Object.parseSourceFile (...\node_modules\typescript\lib\typescript.js:15338:26)
at Object.createSourceFile (...\node_modules\typescript\lib\typescript.js:15192:29)
at new TypeScriptFileRefactor (...\node_modules\@ngtools\webpack\src\refactor.js:79:35)
at Object.findLazyRoutes (...\node_modules\@ngtools\webpack\src\lazy_routes.js:18:22)
at AotPlugin._findLazyRoutesInAst (...\node_modules\@ngtools\webpack\src\plugin.js:220:50)
at _donePromise.Promise.resolve.then.then.then.then.then (...\node_modules\@ngtools\webpack\src\plugin.js:499:24)
at process._tickCallback (internal/process/next_tick.js:109:7)
我在createSourceFile()
和AotPlugin._findLazyRoutesInAst
添加了一个console.log语句。
我注意到AotPlugin._findLazyRoutesInAst
中的以下内容。
for (const filePath of changedFilePaths) { }
。我添加了一个console.log
语句来查看changedFilePaths中的内容,我注意到以下内容:
这些是changedFilePaths ==>
['... / src / polyfills.ts',
'... / src'< ---请注意丢失的文件名。
]
因此,我收到了上述错误。
当我对任何文件进行更改时(无论.ts文件),都会发生这种情况。我尝试修改json文件,上面发生了。 我尝试了以下方法:
在karma.conf.js(as per the official config docs)中,我添加了
exclude: ["./src/nonCodeRelatedData/**"]
。
和
files: [ {pattern: "./src/nonCodeRelatedData/**", watched: false, included: false, served: false}]
但没有运气。
有人能指出我对这个问题的补救措施吗?非常感谢任何帮助。
答案 0 :(得分:0)
我对angular 4和angular-cli 1.6.8 - 1.7.3有相同的错误...当前的解决方法是更改node_modules中的文件,如此处所述https://github.com/angular/angular-cli/issues/5053#issuecomment-366315926或升级到angular 5(不是试过自己)