升级Angular 18后SAP Composable Storefront出现依赖注入错误
解决方案:NullInjectorError: No provider for InjectionToken PROPAGATE_ERROR_RESPONSE!
问题原因
你自定义的PROPAGATE_ERROR_RESPONSE InjectionToken与SAP Spartacus内部使用的并非同一个引用,Angular依赖注入系统会将二者视为不同token,因此无法被Spartacus的_PropagatingToServerErrorHandler正确识别和注入。
修复步骤
1. 导入Spartacus原生Token
不要自行定义该Token,直接从Spartacus官方包中导入:
import { PROPAGATE_ERROR_RESPONSE } from '@spartacus/setup-ssr';
2. 在模块中正确提供依赖
在AppModule(或SSR专用的ServerModule)的providers数组中添加该Token的提供者:
@NgModule({ // ...其他模块配置 providers: [ // ...其他已配置的提供者 { provide: PROPAGATE_ERROR_RESPONSE, useValue: true } ] }) export class AppModule {}
3. 额外检查:版本兼容性
Angular 18属于较新版本,需确认你使用的SAP Composable Storefront 2211.32.1是否正式支持Angular 18。若存在版本不兼容问题,可选择:
- 升级Spartacus到支持Angular 18的版本
- 临时降级Angular到Spartacus 2211.x适配的版本(通常为Angular 16/17)
验证
完成配置后,重新执行ng serve,访问http://localhost:4200/us/en,检查错误是否消失。
内容的提问来源于stack exchange,提问作者Nitesh Patel
相关产品推荐
相关产品推荐

