You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular14+Storybook6.5.13:装饰器与preview-head.html失效求助

解决方案:Angular 14 + Storybook 6.5.x 装饰器与preview-head.html问题修复

一、解决applyDecorators was not supported :( !错误

这个错误源于Storybook 6.5.x与Angular 14的兼容性冲突,加上模块构造函数的逻辑触发了框架不支持的操作,按以下步骤修复:

1. 重构StorybookModule的初始化逻辑

Storybook编译stories时不会实例化NgModule,模块构造函数中的代码会触发异常。将CartService的初始化逻辑移到工厂提供者中:

修改StorybookModule的providers配置:

providers: [
  { provide: ApiService, useClass: ApiMockService },
  { provide: AuthService, useClass: AuthMockService },
  { provide: UserService, useClass: UserMockService },
  // 替换原构造函数中的CartService初始化逻辑
  {
    provide: CartService,
    useFactory: () => {
      const cartService = new CartService();
      cartService.setCartData(MOCKED_CART_DATA, "fake-id");
      console.warn("Storybook module imported. This module should be used only by storybook isolate module!");
      return cartService;
    }
  }
],

然后删除StorybookModule的构造函数:

// 移除这段代码
constructor(private _cart: CartService) {
  // ...原构造函数逻辑
}

2. 升级Storybook到兼容Angular 14的补丁版本

Storybook 6.5.13对Angular 14的兼容性存在缺陷,升级到同分支的最新补丁版(如6.5.16):

npm install @storybook/angular@6.5.16 @storybook/core@6.5.16 --save-dev

二、修复preview-head.html不生效问题

Storybook 6.5.x与Angular 14的构建流程变化导致preview-head.html的脚本执行时机或路径出现问题,按以下方案调整:

1. 替换preview-head.html的脚本导入

将hammerjs的导入移到preview.ts中,避免依赖iframe的onload事件:

// preview.ts顶部添加
import 'hammerjs';

2. 全局添加body类(替代preview-head中的DOM操作)

在preview.ts末尾添加DOM操作代码,确保在Storybook初始化时执行:

// preview.ts末尾添加
if (typeof document !== 'undefined') {
  document.body.classList.add('xyz', 'mat-typography');
}

3. 验证preview-head.html的路径配置

确保preview-head.html放在.storybook目录下,同时检查main.js(或main.ts)中没有覆盖默认配置:

// .storybook/main.js
module.exports = {
  stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
  addons: ['@storybook/addon-links', '@storybook/addon-essentials'],
  // 确保没有自定义previewHead覆盖默认文件
  // previewHead: (head) => `${head}`,
};

内容的提问来源于stack exchange,提问作者Zygmaister

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:55:20