EN
← 错误索引

F_SYSTEM_DUPLICATE_PROVIDER

Provider token 重复或不明确

同一个 Module 重复注册 token,或请求方同时看到多个 imported Provider。

更新于

复现

同一个 Module 内的 token 必须唯一:

src/app.module.ts
import { Module, createApp, createToken } from 'func'

const PROJECT = createToken<string>('PROJECT')

@Module({
  providers: [
    { provide: PROJECT, useValue: 'first' },
    { provide: PROJECT, useValue: 'second' },
  ],
})
class AppModule {}

createApp(AppModule)

如何修复

每个 Module 只保留一个定义。不同 Modules 可以拥有同名私有 token;但如果它们都 export 给同一个请求方,注入时仍会产生歧义。此时减少 export、在请求方注册明确的本地 Provider,或使用不同 token 表达不同职责。

测试覆盖也可能触发此错误:token 在多个 Modules 中注册时,使用 { module, provider } 指定唯一覆盖目标。