在npm start时无法读取未定义的属性'moduleType'

时间:2018-04-12 06:41:47

标签: angular

我正在开发支持使用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

无效

如果需要更多信息,请与我们联系。

1 个答案:

答案 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));
}