You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

封装angular-oauth2-oidc库时遇StaticInjectorError[DocumentToken]运行时错误

解决Angular 5封装angular-oauth2-oidc库时的DocumentToken注入错误

你遇到的这个问题其实是angular-oauth2-oidc内部依赖的DocumentToken注入令牌,在消费应用的注入器里找不到对应的提供者导致的——虽然你没手动用到这个令牌,但它是库内部用来获取浏览器document对象的核心依赖。结合你用angular-library-seed构建库、CLI构建应用的场景,给你几个针对性的解决思路:

1. 调整库的依赖声明

先检查你的库的package.json,把angular-oauth2-oidc从dependencies移到peerDependencies里:

{
  "peerDependencies": {
    "angular-oauth2-oidc": "^4.x.x", // 选兼容Angular 5的版本,比如4.x系列
    "@angular/core": "^5.0.0",
    "@angular/common": "^5.0.0",
    "@angular/http": "^5.0.0"
  }
}

这样消费应用会负责安装这个依赖,确保库和应用共享同一个angular-oauth2-oidc实例,避免因重复打包导致注入令牌的符号不匹配。

2. 手动给消费应用提供DocumentToken

既然错误提示找不到DocumentToken的提供者,你可以直接在消费应用的AppModule里手动补上:

import { NgModule } from '@angular/core';
import { DocumentToken } from 'angular-oauth2-oidc';

@NgModule({
  imports: [SomeModule],
  bootstrap: [AppComponent],
  providers: [
    { provide: DocumentToken, useValue: document }
  ]
})
export class AppModule {}

这一步直接绕过了库和应用之间的依赖传递问题,强制给注入器提供所需的令牌实例。

3. 检查库的构建配置(angular-library-seed)

angular-library-seed默认会把第三方库标记为外部依赖,但如果配置不当,会导致angular-oauth2-oidc的注入令牌符号丢失:

  • 打开库的rollup.config.js或webpack.config.js,确保angular-oauth2-oidc没有被错误排除在打包之外;如果是作为外部依赖,要在globals里配置对应的全局变量,避免符号解析错误。
  • 比如用rollup的话,external数组要包含angular-oauth2-oidc,同时globals里加上"angular-oauth2-oidc": "angularOauth2Oidc"。

4. 调整库模块中OAuthModule的导入方式

尝试把OAuthModule.forRoot()返回的providers显式加入库模块的providers数组:

import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { OAuthModule } from 'angular-oauth2-oidc';

const oAuthModule = OAuthModule.forRoot();

@NgModule({
  imports: [HttpClientModule, oAuthModule],
  providers: [SomeService, ...oAuthModule.providers]
})
export class SomeModule {}

这能确保库模块的注入器能正确获取到angular-oauth2-oidc提供的所有核心依赖,包括DocumentToken。

5. 确认版本兼容性

最后再核对一下版本:Angular 5对应的angular-oauth2-oidc版本要选4.x系列(可以查该库的CHANGELOG确认),版本不匹配很可能导致内部依赖的注入令牌无法被正确识别。

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:29:56