我正在开发支持使用angular cli(1.7.3)进行服务器端渲染的应用程序。
运行命令npm start
build会成功创建,但在服务器上运行应用程序时会抛出错误显示
无法读取未定义
的属性'moduleType'
我认为错误来自server.ts
文件,我正在导入AppServerModuleNgFactory
,如下所示:
const { AppServerModuleNgFactory } = (module as any).exports;
// import { AppServerModuleNgFactory } from '../dist/ngfactory/src/app/app.server.module.ngfactory'
PS:这与角度4.4.0
正常,但与5.2.0
如果需要更多信息,请与我们联系。
答案 0 :(得分:1)
在谷歌搜索后解决了这个问题。
实际上问题在于ng5他们改变了一些配置,而构建就像删除了ngfactory等。
因此server.ts
在服务器端呈现时无法找到AppServerModuleNgFactory
模块。
所以如果没有找到这样的话,我必须从新路径改变位置
const { AppServerModuleNgFactory } = (module as any).exports;
....
some code
....
if ( typeof(AppServerModuleNgFactory) == 'undefined') {
const { AppServerModuleNgFactory } = require('../dist/out-tsc/src/app/app.server.module.ngfactory');
renderModuleFactory(AppServerModuleNgFactory, opts)
.then(html => callback(null, html));
} else {
renderModuleFactory(AppServerModuleNgFactory, opts)
.then(html => callback(null, html));
}