我刚刚将我的项目更新为Angular 2 RC 6.我现在正试图使用博客文章http://angularjs.blogspot.com/中提到的Ahead of Time(AoT)编译,但没有成功。
我在ASP.Net中构建项目时没有使用angular cli。
正如博客文章所示,我已经安装了@ angular / compiler-cli
但是当我尝试从命令提示符运行ngc时,它会给出错误
'ngc' is not recognized as an internal or external command,
operable program or batch file.
npm run ngc
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "ngc"
npm ERR! node v6.4.0
npm ERR! npm v3.10.3
npm ERR! missing script: ngc
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <https://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! D:\Project\App\npm-debug.log
任何人都可以指导如何在ASP.Net Project中使用AoT编译器。或者当您不使用Angular CLI但手动构建组件等时。
修改
我现在设法运行ngc,首先转到 ./ node_modules / .bin / ,然后运行
ngc -p D:\Project\App
但是现在编译器抛出了以下错误:
当我尝试使用ngc编译我的项目时,它会抛出以下错误:
Error: Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function (position 92:25 in the original .ts file), resolving symbol AppModule in
在我的应用程序模块中,我有以下提供程序,这可能是导致该项目的原因。我不确定这究竟出了什么问题?
providers: [
GlobalService,
{
provide: Http,
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions, globalService: GlobalService) => new HttpLoading(backend, defaultOptions, globalService),
deps: [XHRBackend, RequestOptions, GlobalService]
}
],
答案 0 :(得分:2)
GlobalService,
{
provider: Http, // <-- I believe you were missing the "r" in provide"r"
}
看看rc6突破性变化:
https://github.com/angular/angular/blob/master/CHANGELOG.md#breaking-changes
答案 1 :(得分:1)
我使用
遇到了这个问题"@angular/compiler-cli": "^4.0.1"
我删除/ node_modules / @ angular文件夹并运行
npm install
似乎解决了我的问题。我的包裹副本必须搞定了
答案 2 :(得分:0)
问题1
当从package.json或&#34; npm脚本&#34;运行脚本时,要修复Windows 10上的路径问题,您需要将directory_path包装在双引号中,并使用反斜杠转义每个双引号:< / p>
"compile:aot": \"./node_modules/.bin/ngc\" -p src
这会执行位于ngc
./node_modules/.bin
个-p src
个cd ./node_modules/.bin && ngc -p src
的{{1}}程序。
否则,您必须require()
作为2个不同的命令。
问题2
目前似乎角度2的AOT编译在{{1}}语句中存在问题。因此,如果要消除编译错误,则必须从应用程序中删除所有require()语句。
显然,这是一个坏主意,因为require()有价值,特别是在使用Webpack或其他模块捆绑器时。我们必须等待angular2团队的解决方案。
答案 3 :(得分:0)
可能是你的@NgModule定义中有函数调用。 我必须删除一些动态提供程序才能使它适用于我。
也许你应该尝试更换你的&#39; useFactory :( ...)=&gt; {...}&#39;或者至少测试评论它。