我正在将我的应用从角2.1升级到角5.0.0。并收到此错误。
错误:StaticInjectorError [InjectionToken DocumentToken]:\ n StaticInjectorError [InjectionToken DocumentToken]:\ n
NullInjectorError:没有PullToken DocumentToken的提供者!\ n
NullInjectorError:没有PullToken DocumentToken的提供者!\ n
在_NullInjector.get (/Users/temp/Documents/GitHub/sample-app/node_modules/@angular/core/bundles/core.umd.js:962:19)\n 在resolveToken (/Users/temp/Documents/GitHub/sample-app/node_modules/@angular/core/bundles/core.umd.js:1250:24)\n 在tryResolveToken (/Users/temp/Documents/GitHub/sample-app/node_modules/@angular/core/bundles/core.umd.js:1192:16)\n 在StaticInjector.get (/Users/temp/Documents/GitHub/sample-app/node_modules/@angular/core/bundles/core.umd.js:1063:20)\n 在resolveToken (/Users/temp/Documents/GitHub/sample-app/node_modules/@angular/core/bundles/core.umd.js:1250:24)\n 在tryResolveToken (/Users/temp/Documents/GitHub/sample-app/node_modules/@angular/core/bundles/core.umd.js:1192:16)\n 在StaticInjector.get (/Users/temp/Documents/GitHub/sample-app/node_modules/@angular/core/bundles/core.umd.js:1063:20)\n 在resolveNgModuleDep (/Users/temp/Documents/GitHub/sample-app/node_modules/@angular/core/bundles/core.umd.js:10623:25)\n 在_callFactory (/Users/temp/Documents/GitHub/sample-app/node_modules/@angular/core/bundles/core.umd.js:10693:32)\n 在_createProviderInstance $ 1 (/Users/temp/Documents/GitHub/sample-app/node_modules/@angular/core/bundles/core.umd.js:10637:26)”,
这不是一个Angular CLI应用程序,因此我在git上创建了一个repo,以便最小化问题的再现。请参阅以下link
请参阅README.md
了解构建并提供应用。
使用webpack:3.11.0用于构建此应用程序。 无法理解这个问题。
答案 0 :(得分:1)
此处的问题是您的服务器index.js
包中包含@angular/core
代码。这意味着当您运行代码时,您有两个不同的函数InjectionToken
,它们创建两个不同的DocumentToken
实例。
可能的解决方法是更改
中的externals
选项
<强> webpack.config.json 强>
export var serverConfig = {
...
externals: includeClientPackages(
/@angularclass|@angular|angular2-|.....
),
externals: angularExternals(),
...
}
...
export function angularExternals() {
return function (context, request, callback) {
if (request.startsWith('@angular/')) {
return callback(null, {
root: ['ng', request.replace(/^@angular//, '')],
commonjs: request,
commonjs2: request,
amd: request
});
}
callback();
};
}
之后,index.js包不会包含来自@angular/core
的重复代码,因此angular将能够成功解析依赖关系。
答案 1 :(得分:0)
从'@ angular / common / http'导入{HttpClientModule,HttpClient};
然后: 进口:[ HttpClientModule]
它将起作用