Angular 2 RC 6 AoT编译器不工作



我刚刚将我的项目更新为Angular 2 RC 6。我现在正在尝试使用博客文章中提到的提前编译http://angularjs.blogspot.com/但没有成功。

我在ASP中构建项目时没有使用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:ProjectAppnpm-debug.log

有人能指导如何将AoT编译器与ASP一起使用吗。Net项目。或者,当您不使用Angular CLI,而是手动构建组件等时。

编辑

我现在设法运行ngc,首先转到/node_modules/.bin/,然后运行

ngc -p D:ProjectApp

但现在编译器抛出以下错误:

当我试图用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]
        }
    ],
        GlobalService,
        {
            provider: Http, // <-- I believe you were missing the "r" in provide"r"
        }

看看rc6的突破性变化:

https://github.com/angular/angular/blob/master/CHANGELOG.md#breaking-更改

我在使用时遇到了这个问题

"@angular/compiler-cli": "^4.0.1"

对我来说,删除/nod_module/@angular文件夹并运行

npm install

似乎解决了我的问题。我的包裹一定被搞砸了

问题1

当运行package.json或"npm scripts"中的脚本时,要修复Windows 10上的路径问题,需要用双引号包装directory_path,并用反斜杠转义每个双引号:

"compile:aot": "./node_modules/.bin/ngc" -p src

这将执行位于具有-p src自变量的./node_modules/.bin中的ngc程序。

否则,必须将cd ./node_modules/.bin && ngc -p src作为两个不同的命令。

问题2

目前看来,angular 2的AOT编译在require()语句方面存在问题。因此,如果你想消除编译错误,你必须从你的应用程序中删除所有require((语句。

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

可能是因为@NgModule定义中有函数调用。我必须删除一些动态提供者,使其为我工作。

也许您应该尝试替换您的"useFactory:(…(=>{…}",或者至少测试注释它。

相关内容

  • 没有找到相关文章

最新更新