无法使用@ ngtools / webpack创建Angular 5 Universal服务器应用程序包

时间:2017-11-11 22:26:36

标签: node.js angular express webpack angular-universal

我正在尝试使用Angular 5和没有cli的WebPack构建通用应用程序。

我遇到的问题是我似乎无法使快速应用程序正常工作,每次我点击服务器时都会遇到此错误

Error: You must pass in a NgModule or NgModuleFactory to be bootstrapped
    at View.engine (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/@nguniversal/express-engine/src/main.js:34:23)
    at View.render (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/view.js:135:8)
    at tryRender (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/application.js:640:10)
    at Function.render (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/response.js:1008:7)
    at /Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/dist/server.js:122:47
    at Layer.handle [as handle_request] (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/router/layer.js:95:5)
    at next (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/router/layer.js:95:5)

我认为这个问题与server.ts随后使用的服务器应用程序包有关,因为如果我控制台注销AppServerModuleNgFactory,它将显示为未定义。

我已经尝试将我的服务器配置与尽可能接近于angular / universal-starter repo中CLI项目生成的服务器配置相匹配,但它不会生成服务器可以使用的应用程序包

您可以在https://github.com/mogusbi/ng5-universal-webpack找到回购。克隆,运行npm start并转到localhost:4000

2 个答案:

答案 0 :(得分:1)

我最终弄清楚为什么在深入研究CLI源代码的细节之后没有生成ModuleNgFactories,而这只是因为AngularCompilerPlugin中有一个名为platform的未记录选项 - 需要将其设置为1以生成服务器应用程序包,然后由ngExpressEngine应用程序中的express使用。

一旦你这样做,一切都按预期工作!

我希望其他任何在没有CLI的情况下让同构内容无法工作的人会发现这个有用

答案 1 :(得分:0)

在src目录下创建main.server.ts文件,然后在main.server.ts文件中输入以下代码:

export { AppServerModule } from './app/app.server.module';