为什么我会得到
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 { }
主要的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
有什么问题?它看起来像是一个字符串路由到工厂映射/ JS对象,并且被导出。那么为什么provideModuleMap
不能正确解决它呢?BlogModule
只有一个Hello-World-Stub组件的声明。
顺便说一句,这里有一个类似的问题,但没有回复:Angular5在Firebase托管和SEO上实现Universal懒加载