Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角静校正误差_Angular_Typescript - Fatal编程技术网

Angular 角静校正误差

Angular 角静校正误差,angular,typescript,Angular,Typescript,我正在写一个需要包装的库 所有内容(库和用户应用程序)都可以正常编译,但在浏览器中运行时,我遇到以下错误: ERROR Error: StaticInjectorError[InjectionToken DocumentToken]: StaticInjectorError[InjectionToken DocumentToken]: NullInjectorError: No provider for InjectionToken DocumentToken! at _

我正在写一个需要包装的库

所有内容(库和用户应用程序)都可以正常编译,但在浏览器中运行时,我遇到以下错误:

ERROR Error: StaticInjectorError[InjectionToken DocumentToken]: 
  StaticInjectorError[InjectionToken DocumentToken]: 
    NullInjectorError: No provider for InjectionToken DocumentToken!
    at _NullInjector.get (core.js:993)
    at resolveToken (core.js:1281)
    at tryResolveToken (core.js:1223)
    at StaticInjector.get (core.js:1094)
    at resolveToken (core.js:1281)
    at tryResolveToken (core.js:1223)
    at StaticInjector.get (core.js:1094)
    at resolveNgModuleDep (core.js:10878)
    at _createClass (core.js:10919)
    at _createProviderInstance$1 (core.js:10889)
缩写代码:

库模块:为我的库定义
NgModule
,导入所需的
OAuthModule
HttpClientModule
。定义我的
SomeService
服务

@NgModule({
    imports: [ HttpClientModule, OAuthModule.forRoot() ],
    providers: [ SomeService ]
})
export class SomeModule {}
库服务:最简单的例子是,只实例化OAuthService

@Injectable()
export class SomeService {
    constructor(private oauth: OAuthService) {}
}
消费者应用程序模块:只需将我的库作为
SomeModule
导入即可

@NgModule({
    ...
    imports: [ SomeModule ],
    bootstrap: [ AppComponent ]
})
export class AppModule { }
使用者组件:尝试调用my library中的
SomeService
服务,从而产生错误

  • 库和应用程序都编译无误
  • 当我在浏览器中打开应用程序时,会出现上面提到的错误
  • 如果我从库导入中删除
    HttpClientModule
    ,它会说我缺少
    HttpClient
    ,而不是上面的错误
  • 图书馆是用塑料建造的
  • 应用程序是使用
    @angular/cli
我试过很多东西,比如

  • 让应用程序也导入OAuthModule
  • 在库中删除
    OAuthModule.forRoot()
    上的
    .forRoot()
    ,意味着库无法访问
    OAuthModule
  • 将库更改为同时使用
    .forRoot()
    ,并使用
    提供程序
    阵列中的几乎所有服务组合(在自身、OAuthService和HttpClientService之间)
  • 将网页包配置更改为不将@angular/*列为外部
  • 更改webpack配置以将OAuth库列为外部
  • 使用rollup而不是webpack,从两个单独的种子项目配置
  • 更多的事情可以归结为抓救命稻草
在谷歌上搜索,当他们的NgModule上的providers数组中缺少一些明显的内容时,似乎会发生这个错误;这似乎不适用于我。我不在任何地方使用“DocumentToken”

我还看到一个常见的修复方法是导入
HttpClientModule
,我已经这样做了,但没有效果

我发现正好有一个其他人使用“DocumentToken”得到此错误的实例。他们在中修复了自己的库,这似乎只是在汇总配置中添加了更多的外部内容。虽然我的库使用webpack,但它用于确保所有@angular/*包都列为外部包

任何帮助或想法都将不胜感激


(Angular 5,TypeScript 2.6.2)

您应该在
SomeModule
声明中声明
AppComponent
,或者在
AppModule
中提供
SomeService
。至少试一下,我可能会弄错:)不幸的是,
AppComponent
SomeModule
存在于不同的项目中。
AppComponent
是应用程序的一部分,
SomeModule
是库NgModule。是否使用aot构建?可能是OAuthModule不支持它。我不太擅长理解angular Underhood,但可能是
AppComponent
试图使用
SomeService
,但由于它是外部服务,所以无法加载,或者类似的东西。如果可能,请尝试将
SomeService
添加到
AppModule
提供程序中,并查看这是否解决了错误。有关DocumentToken的唯一信息在CommonModule源代码中。因此,您必须在模块中导入。[公共模块中的文档DI源][1][1]:
@Component({ ... })
export class AppComponent {
    constructor(
        private someService: SomeService
    ) {}
}