【发布时间】: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 build、ng 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