【问题标题】:How to make Angular Ivy + Angular Universal work?如何使 Angular Ivy + Angular Universal 工作?
【发布时间】:2019-11-20 04:47:55
【问题描述】:

当我尝试在我的项目中使用 Ivy + Angular Universal 时出现错误。

我只在 Ivy 模式下使用 Angular 时出现此错误(当我在 tsconfig.app.json 中将 enableIvy 设置为 false 时,我可以成功构建我的应用程序)。

以下是重现我的问题的步骤:

1.与 Ivy 的新项目

ng new test-angular --enableIvy

2。添加 Angular 通用

ng add @nguniversal/express-engine --clientProject test-angular

3.当我进行构建时出现错误

ERROR in Node does not exist: "path_to/node_modules/@nguniversal/express-engine"

我的 ng --version 输出是:

Angular CLI: 8.1.0
Node: 10.15.3
OS: win32 x64
Angular: 8.1.0
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... platform-server, router

Package                                    Version
--------------------------------------------------------------------
@angular-devkit/architect                  0.801.0
@angular-devkit/build-angular              0.801.0
@angular-devkit/build-optimizer            0.801.0
@angular-devkit/build-webpack              0.801.0
@angular-devkit/core                       8.1.0
@angular-devkit/schematics                 8.1.0
@ngtools/webpack                           8.1.0
@nguniversal/express-engine                8.1.1
@nguniversal/module-map-ngfactory-loader   8.1.1
@schematics/angular                        8.1.0
@schematics/update                         0.801.0
rxjs                                       6.4.0
typescript                                 3.4.5
webpack                                    4.35.2

如果我删除main.server.ts 文件(步骤 2 中生成的文件)中的这些行

export { ngExpressEngine } from "@nguniversal/express-engine";
export { provideModuleMap } from "@nguniversal/module-map-ngfactory-loader";

命令 ng buildng serve 有效,但我仍然可以使用 SSR(npm run serve:ssr 失败并出现 TypeError: provideModuleMap is not a function,因为我猜我已经删除了这行...)。

谢谢你=)

【问题讨论】:

  • 这将在 Angular 9 中可用,他们在 ng-conf 2019 中提到 Ivy 处于 opt-preview 并且不能与 SSR 一起使用
  • 是的,我创建了一个 GitHub 问题:link。它现在可以在 Angular 9 上运行

标签: angular angular-universal angular-ivy


【解决方案1】:

我们刚刚发布了对 Ivy 和 NG9 的官方支持(请注意,ng9 仍在 rc(候选发布版)中,因此在最终发布之前,Angular 可能会发生一些变化)。

您可以在 Trilon 博客上阅读全文和公告:Angular Universal v9: What's New?

总结一下设置:

  • 确保您的 Angular 应用程序已升级到最新的 v9 (RC)

  • 安装最新的(RC)通用原理图ng add @nguniversal/express-engine@next

  • 如果您来自现有的通用原理图 v8(express-engine 或 hapi-engine)通过“ng update”升级,即: ng update @nguniversal/express-engine —-next

【讨论】:

  • 我的APP更新到A9后也遇到了同样的问题
猜你喜欢
  • 2019-10-16
  • 2021-10-03
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 2019-11-09
  • 2019-09-16
相关资源
最近更新 更多