【发布时间】:2018-09-01 01:30:40
【问题描述】:
我为什么会得到
Error: StaticInjectorError(AppServerModule)[NgModuleFactoryLoader -> InjectionToken MODULE_MAP]:
StaticInjectorError(Platform: core)[NgModuleFactoryLoader -> InjectionToken MODULE_MAP]:
NullInjectorError: No provider for InjectionToken MODULE_MAP!
何时尝试使用 firebase 进行部署?
我确实用过
extraProviders: [
provideModuleMap(LAZY_MODULE_MAP)
]
在我的 app-server.module 中,我确实导入了 ModuleMapLoaderModule(顺便说一句,我尝试以不同的顺序导入 ServerModule 和 AppModule,有人告诉我这可能是问题所在,但它没有用):
@NgModule({
imports: [
ServerModule,
AppModule,
ModuleMapLoaderModule,
],
bootstrap: [AppComponent],
})
export class AppServerModule { }
main.bundle.js 包含以下内容:
Object.defineProperty(exports, "__esModule", { value: true });
var app_server_module_ngfactory_1 = __webpack_require__("./src/app/app.server.module.ngfactory.js");
exports.AppServerModuleNgFactory = app_server_module_ngfactory_1.AppServerModuleNgFactory;
var __lazy_0__ = __webpack_require__("./src/app/features/blog/blog.module.ngfactory.js");
var app_server_module_1 = __webpack_require__("./src/app/app.server.module.ts");
exports.AppServerModule = app_server_module_1.AppServerModule;
exports.LAZY_MODULE_MAP = { "app/features/blog/blog.module#BlogModule": __lazy_0__.BlogModuleNgFactory };
main.bundle.js 确实会正确导入到 firebase 脚本中,因为如果我更改 require(...) 中的一些字母,我会收到一个文件未知的错误。那么LAZY_MODULE_MAP 有什么问题呢?它看起来像一个 string-route-to-factory map/js-object 并被导出。那么为什么provideModuleMap 不能正确解决它呢? BlogModule 只有一个 Hello-World-Stub 组件的声明。
顺便说一句,这里有一个类似的问题,但没有回复:Angular5 Universal lazy loading on firebase hosting and seo
【问题讨论】:
-
嗨,您现在可能已经解决了这个问题,但如果没有,您能否发布整个服务器 JS 文件(包含行
provideModuleMap(LAZY_MODULE_MAP)的那个)?我自己刚刚遇到了这个问题,并通过确保我只在生产模式下使用renderModuleFactory和renderModule来解决它。 -
你能提供你的代码吗?
标签: angular firebase google-cloud-functions angular-universal