升级Storybook7.0.23+Angular16遇类型错误,applicationConfig无效求方案
确认插件版本兼容性
7.0.23虽标注支持Angular 16,但早期7.x版本可能存在适配bug。建议升级到7.x分支的最新稳定版(如7.6+),执行npm install @storybook/angular@latest --save-dev更新,同时确保@angular/*依赖版本统一为16.x。修正applicationConfig的正确用法
不要将applicationConfig的结果直接塞入旧的providers数组,需作为装饰器在preview.ts中配置:import { applicationConfig } from '@storybook/angular'; // 示例导入Angular 16的新提供者函数 import { provideHttpClient, withInterceptors } from '@angular/common/http'; export const decorators = [ applicationConfig({ providers: [ provideHttpClient(withInterceptors([/* 你的拦截器 */])), // 其他自定义提供者 ], }), ];所有返回
EnvironmentProviders类型的提供者(如Angular 16新增的provide*系列)必须放在这里,不能单独在旧配置中声明。排查自定义提供者类型
检查项目中自定义的providers,若有返回EnvironmentProviders的实现,必须统一放入applicationConfig的providers数组,禁止混合使用旧的providers配置字段。清理缓存并重建
执行npm run storybook -- --no-manager-cache启动Storybook,或手动删除node_modules/.cache/storybook目录,避免缓存残留导致旧配置生效。移除冲突的旧配置
检查.storybook/main.ts中是否存在angularOptions.providers字段,该配置在Storybook 7中已废弃,需彻底删除,确保所有提供者配置都迁移到preview.ts的applicationConfig中。
内容的提问来源于stack exchange,提问作者Igor Kurkov

