我正在尝试使用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
答案 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';