6

我刚刚将我的项目更新到 Angular 2 RC 6。我现在正在尝试使用博客文章http://angularjs.blogspot.com/中提到的提前 (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 项目中使用 AoT 编译器。或者当您不使用 Angular CLI 而是手动构建组件等时。

编辑

我现在设法通过首先移动到./node_modules/.bin/然后运行来运行 ngc

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

4 回答 4

2
        GlobalService,
        {
            provider: Http, // <-- I believe you were missing the "r" in provide"r"
        }

看看 rc6 的重大变化:

https://github.com/angular/angular/blob/master/CHANGELOG.md#break-changes

于 2016-09-02T11:50:29.700 回答
1

我遇到了这个问题

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

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

npm install

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

于 2017-07-12T22:13:04.293 回答
0

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

也许您应该尝试替换您的 'useFactory: (...)=>{...}' 或至少测试评论它。

于 2017-10-15T06:34:26.737 回答
0

问题 1

从 package.json 或“npm scripts”运行脚本时,要修复 Windows 10 上的路径问题,您需要将 directory_path 用双引号括起来,并用反斜杠转义每个双引号:

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

这将执行带有参数的ngc程序。./node_modules/.bin-p src

否则,您必须使用cd ./node_modules/.bin && ngc -p src2 个不同的命令。

问题 2

目前,Angular 2 的 AOT 编译似乎存在require()语句问题。所以如果你想消除编译错误,你必须从你的应用程序中删除所有的 require() 语句。

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

于 2016-09-06T18:36:29.367 回答