如何使Angular Ivy + Angular Universal工作?

时间:2019-07-10 14:17:13

标签: angular angular-universal angular-ivy

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

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

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

1。常春藤新项目

ng new test-angular --enableIvy

2。添加Angular Universal

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失败了,因为我删除了这一行,我想是……)

谢谢=)

1 个答案:

答案 0 :(得分:1)

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

您可以在 Trilon博客上Angular Universal v9: What's New?

上阅读全文和公告。

总结设置过程:

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

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

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