Karma单元测试:ERROR in无法读取未定义

时间:2018-01-22 23:09:55

标签: angular typescript karma-jasmine

运行业力单元测试时遇到同样的问题。这是我的发现

我的一个单元测试会将数据写入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}]

但没有运气。

有人能指出我对这个问题的补救措施吗?非常感谢任何帮助。

1 个答案:

答案 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(不是试过自己)