复现
同一个 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 } 指定唯一覆盖目标。