【发布时间】:2023-03-09 06:40:02
【问题描述】:
我有一个 angular-cli 应用程序,
npm -v 3.10.8
node -v v6.9.1
angular2 ^2.4.0
angular/cli 1.0.0-beta.32.3
当我添加到 package.json 这个
"angular2-auto-scroll": "1.0.12"
并在 app.module.ts 中导入它
import { Angular2AutoScroll } from "angular2-auto-scroll/lib/angular2-auto-scroll.directive";
并将其添加到 declarations 部分 ng build --prod 失败并出现此错误
ERROR in Unexpected value 'Angular2AutoScroll in C:/coding/workspace/myapp/myapp-web/node_modules/angular2-auto-scroll/lib/angular2-auto-scroll.directive.d.ts' declared by the module 'AppModule in C:/coding/workspace/myapp/myapp-web/app_code/app/app.module.ts'
ERROR in ./app_code/main.ts Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in 'C:\coding\workspace\myapp\myapp-web\app_code'
@ ./app_code/main.ts 6:0-74
@ multi ./app_code/main.ts
但是,当我仅使用 ng build 构建而没有 --prod 时,一切构建都很好。 有谁知道可能是什么原因?或者任何其他方式我可以导入这个 npm 包,这样它就不会失败 PROD 构建?
【问题讨论】:
-
试试
ng build --prod --aot false,看看是否可行。您添加的库可能对 AOT 不友好。 AOT = true 是prod构建的默认编译模式,从 beta 28 开始。 -
似乎没有燕麦也可以,非常感谢!我现在唯一需要考虑的是对我的应用程序性能的影响是什么,是不是真的很大?
-
下载时间可能会成为一个因素,应用程序必须在没有 AOT 的情况下在运行时编译。这真的归结为应用程序的复杂性、内部/外部受众等。JIT 还不错,但如果你的应用程序有变大的潜力,或者拥有庞大的用户群,AOT 真的很好。以字节为单位发送给客户端的内容存在巨大差异。不过,AOT 需要做一些前期工作 -> angular.io/docs/ts/latest/cookbook/aot-compiler.html
标签: node.js angular npm angular-cli autoscroll