Angular 19 SSR/SSG环境下InjectionToken注入失败问题求助
问题解决:NullInjectorError: No provider for InjectionToken storageBaseUrl!
原因分析
你在应用的app.config.ts中使用字符串'STORAGE_BASE_URL'作为依赖注入的标识,但库中定义的STORAGE_BASE_URL是一个InjectionToken实例。Angular的依赖注入系统是通过令牌的引用身份来匹配提供者的,字符串和实例是完全不同的两个标识,所以DI系统找不到对应STORAGE_BASE_URL实例的提供者,最终抛出错误。
解决方法
需要在应用配置中导入库中的STORAGE_BASE_URL令牌实例,用它作为provide字段的值,而非字符串。
修正后的app.config.ts
import { environment } from '../environments/environment'; // 从共享库导入STORAGE_BASE_URL令牌(路径根据你的库结构调整) import { STORAGE_BASE_URL } from 'SharedLib/tokens'; export const appConfig: ApplicationConfig = { providers: [ // [...] { provide: STORAGE_BASE_URL, useValue: environment.storageBaseUrl }, ], };
额外说明
- 确认导入路径正确,必须指向库中导出
STORAGE_BASE_URL的具体文件。 - 由于
app.config.server.ts已经通过mergeApplicationConfig合并了appConfig,服务端配置会自动继承这个正确的提供者,无需额外修改。
修改完成后重新运行ng serve,DI系统就能正确匹配到STORAGE_BASE_URL的提供者,错误即可消除。
内容的提问来源于stack exchange,提问作者Tilli85
相关产品推荐
相关产品推荐

