无法使用 @ngtools/webpack 创建 Angular 5 通用服务器应用程序应用程序包
Unable to create a Angular 5 Universal server application application bundle using @ngtools/webpack
我正在尝试使用 Angular 5 和没有 cli 的 WebPack 构建通用应用程序。
我遇到的问题是,我似乎无法让 express 应用程序正常工作,每次访问服务器时都会遇到此错误
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 存储库中 CLI 项目生成的配置,但它不会生成服务器配置的应用程序包可以使用
您可以在 https://github.com/mogusbi/ng5-universal-webpack
找到存储库。克隆 运行 npm start
并转到 localhost:4000
我最终弄清楚了为什么在深入研究 CLI 源代码的细节之后没有生成 ModuleNgFactories,这实际上只是因为 AngularCompilerPlugin
中有一个名为 [=11= 的未记录选项] - 它需要设置为 1
以生成服务器应用程序包,然后由 express
应用程序中的 ngExpressEngine
使用。
一旦你这样做了,一切都会如你所愿!
我希望在没有 CLI 的情况下无法使同构的东西工作的任何其他人发现这很有帮助
在src目录下创建main.server.ts文件,然后在main.server.ts文件中输入这段代码:
export { AppServerModule } from './app/app.server.module';
我正在尝试使用 Angular 5 和没有 cli 的 WebPack 构建通用应用程序。
我遇到的问题是,我似乎无法让 express 应用程序正常工作,每次访问服务器时都会遇到此错误
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 存储库中 CLI 项目生成的配置,但它不会生成服务器配置的应用程序包可以使用
您可以在 https://github.com/mogusbi/ng5-universal-webpack
找到存储库。克隆 运行 npm start
并转到 localhost:4000
我最终弄清楚了为什么在深入研究 CLI 源代码的细节之后没有生成 ModuleNgFactories,这实际上只是因为 AngularCompilerPlugin
中有一个名为 [=11= 的未记录选项] - 它需要设置为 1
以生成服务器应用程序包,然后由 express
应用程序中的 ngExpressEngine
使用。
一旦你这样做了,一切都会如你所愿!
我希望在没有 CLI 的情况下无法使同构的东西工作的任何其他人发现这很有帮助
在src目录下创建main.server.ts文件,然后在main.server.ts文件中输入这段代码:
export { AppServerModule } from './app/app.server.module';