Angular-CLI构建:ERROR in无法读取未定义的属性'getSourceFile'

时间:2017-04-18 00:33:05

标签: angular angular-cli

我正在尝试让Angular CLI为现有的(相当大的)Angular 2项目工作。我开始关注CLI Quickstart,并开始运行Hello World项目。

之后我一直在尝试将现有项目复制到CLI项目中并进行构建。在解决了很多错误之后,当我执行“ng serve”或“ng build”命令时,我只剩下一个:

Cannot read property 'getSourceFile' of undefined

我发现this GitHub thread建议在

中替换WebPack的_resolve()函数
node_modules@ngtools\webpack\src\compiler_host.js

我在我的本地 NPM的Angular-CLI和全局版本中替换了它: [用户] \应用程序数据\漫游\ NPM \ node_modules \ @angular \ CLI \ node_modules \ @ngtools \的WebPack \ SRC \ compiler_host.js

我仍然得到错误。

我注意到这里的WebPack版本是1.3.0,而NPM中当前的版本是1.4.1。它还说我全局安装的Angular CLI是“1.0.0”,而NPM中的最新版本显示为1.0.0-beta-28.3

任何人都可以解释1.0.0是最新的还是1.0.0-beta-28.3?为什么1.0.0根本没有出现在NPM中,但它似乎安装在我的电脑上?

最重要的是,任何想法如何解决此错误?

6 个答案:

答案 0 :(得分:4)

我遇到了同样的错误。

我只是通过关闭现有的Angular-CLI命令提示符并重新运行来解决了这个问题 ng serve 在新的命令提示符下。

答案 1 :(得分:1)

我从cmd重新安装了angular / cli,错误得到了解决。

注意: 像那样: list = [] for i in range(0, 256): icounter = 0 for x in range(len(Arr)): if Arr[x] == i: icounter += 1 list.append(icounter)

答案 2 :(得分:1)

我遇到同样的错误,当我开始使用ng-serve时,我没有等待webpack编译并运行http://localhost:4200/# 我能想到的一个原因是webpack没有编译所有这些模块,在它自我之前我通过点击index.html来启动这些组件,这就是它失败的原因。

但是当我用ng-serve重新启动时,我等待webpack:编译成功。终端上的消息,然后转到http://localhost:4200/# 它运作良好。希望有所帮助。

答案 3 :(得分:0)

我最终通过将npm中的TypeScript更新为2.3.x来解决这个问题。我相信以前我使用的是2.0.x,而Angular现在使用的是2.1.x并希望使用该版本或更新版本。

然后通过确保安装的Angular版本与CLI编译器的版本匹配,我解决了另一个(同样神秘的)错误。 (我在Angular 2.x上,需要升级到4.x)

答案 4 :(得分:0)

我得到了同样的错误,花了大约1个小时的时间想知道发生了什么。最后我停止了它并再次运行它 - Ctrl + F5和npm启动它起作用,因为它从未被破坏...到目前为止我在Angular 4中注意到的是很多问题可以用停止(Ctrl + F5)/开始(npm开始)或使用npm rebuild重建包删除所有node_modules并使用npm install再次安装如果没有那些建议工作你可以开始挖谷歌:)

答案 5 :(得分:0)

我通过从我的模块中删除已删除的组件的引用来解决了这个问题。