出现错误'在angular2应用程序中运行服务时,无法读取未定义的属性'长度'

而使用angular-cli命令运行angular2应用程序ng-serve我收到以下问题

dashboard@0.0.0启动C:\ Users \ padmavathi \ Downloads \ phototype-development \ web \ dashboard ng serve

Cannot read property 'length' of undefined TypeError: Cannot read property 'length' of undefined at createSourceFile (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\typescript\lib\typescript.js:8980:109) at parseSourceFileWorker (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\typescript\lib\typescript.js:8940:26) at Object.parseSourceFile (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\typescript\lib\typescript.js:8899:26) at Object.createSourceFile (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\typescript\lib\typescript.js:8727:29) at new TypeScriptFileRefactor (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\@ngtools\webpack\src\refactor.js:25:35) at Object.resolveEntryModuleFromMain (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\@ngtools\webpack\src\entry_resolver.js:108:18) at AotPlugin._setupOptions (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\@ngtools\webpack\src\plugin.js:129:58) at new AotPlugin (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\@ngtools\webpack\src\plugin.js:37:14) at Object.exports.getWebpackNonAotConfigPartial (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\angular-cli\models\webpack-build-typescript.js:20:13) at new NgCliWebpackConfig (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\angular-cli\models\webpack-config.js:23:42) at Class.run (C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\angular-cli\tasks\serve-webpack.js:20:22) at C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\node_modules\angular-cli\commands\serve.js:102:26 at process._tickCallback (internal/process/next_tick.js:103:7) npm ERR! Windows_NT 6.3.9600 npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start" npm ERR! node v6.9.1 npm ERR! npm v3.10.8 npm ERR! code ELIFECYCLE npm ERR! dashboard@0.0.0 start: `ng serve` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the dashboard@0.0.0 start script 'ng serve'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the dashboard package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! ng serve npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs dashboard npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls dashboard npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! C:\Users\padmavathi\Downloads\phototype-development\web\dashboard\npm-debug.log. 

请帮我解决这个问题。 提前致谢。

当我们在重构过程中意外删除了environment.prod.ts时,我们有同样的错误( Cannot read property 'length' of undefined [...] at createSourceFile [...] )。 恢复这个文件解决了我们的问题。

PS。 Github上也有一个报道:

从github引用(因为我不知道如何直接链接到答复:“>)

我认为在许多情况下这个问题是由于打字稿试图处理一个不存在的文件造成的。 在我的一个项目中,这是一个缺less的.d.ts文件。 另一个是缺less环境的ts文件。 在node_modules / typescript / lib / typescript.js的createSourceFile函数的开头添加一个console.log(fileName)帮助我精确定位了特定的文件。 请记住删除更改或重新安装您的node_modules。

来源: https : //github.com/angular/angular-cli/issues/5053

这为我做了诡计。 最后一个console.log显示了麻烦的文件

检测错误的简单方法是运行tsc -p <file_tsconfig.json_path>在编译源代码期间您将看到完整的错误。