Angular 2 RC 6 AoT编译器无法正常工作

时间:2016-09-02 01:22:35

标签: angular angular2-services angular2-compiler

我刚刚将我的项目更新为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]
        }
    ],

4 个答案:

答案 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 srccd ./node_modules/.bin && ngc -p src的{​​{1}}程序。

否则,您必须require()作为2个不同的命令。

问题2

目前似乎角度2的AOT编译在{{1}}语句中存在问题。因此,如果要消除编译错误,则必须从应用程序中删除所有require()语句。

显然,这是一个坏主意,因为require()有价值,特别是在使用Webpack或其他模块捆绑器时。我们必须等待angular2团队的解决方案。

答案 3 :(得分:0)

可能是你的@NgModule定义中有函数调用。 我必须删除一些动态提供程序才能使它适用于我。

也许你应该尝试更换你的&#39; useFactory :( ...)=&gt; {...}&#39;或者至少测试评论它。