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

Ember-classic-decorator在v2 addon组件中无法使用,普通组件正常,求解决方案

解决Ember v2 Addon中ember-classic-decorator模块找不到的问题

以下是几个可行的解决方案,按优先级排序:

1. 正确声明依赖类型

v2 Addon遵循严格的依赖管理规则,不要将ember-classic-decorator放在devDependencies中,必须将其移至dependencies或peerDependencies:

  • 如果你的Addon需要直接依赖该包运行,执行命令安装并添加到dependencies:
    npm install ember-classic-decorator --save
    # 或 yarn add ember-classic-decorator
    
  • 如果希望由宿主应用提供该依赖(更符合Ember生态的最佳实践),将其声明为peerDependencies,在package.json中添加:
    "peerDependencies": {
      "ember-classic-decorator": "^3.0.0"
    }
    
    同时提醒使用该Addon的用户安装此依赖。

2. 配置Rollup构建(针对v2 Addon)

v2 Addon默认使用Rollup打包,需确保Rollup能正确解析ember-classic-decorator模块:

  1. 确保你的rollup.config.js中引入了@embroider/addon-dev插件(v2 Addon标配):
    const { addonDev } = require('@embroider/addon-dev/rollup');
    const { babel } = require('@rollup/plugin-babel');
    
    module.exports = {
      input: 'src/index.js',
      output: addonDev.output(),
      plugins: [
        addonDev(),
        babel({
          babelHelpers: 'bundled',
          extensions: ['.js', '.gjs', '.gts'],
        }),
      ],
      // 将Ember类依赖标记为external,由宿主环境提供
      external: ['ember-classic-decorator', '@ember/component', '@ember/service'],
    };
    
  2. 执行重新构建:
    npm run build
    # 或 yarn build
    

3. 验证导入路径与源码结构

v2 Addon的源码默认放在src目录下,而非传统的app目录:

  • 确保组件文件位于src/components/下(而非app/components/)
  • 导入语句必须正确:
    import { classic } from 'ember-classic-decorator';
    
    不要使用相对路径或错误的模块名。

4. 清除缓存并重启开发服务

Ember的缓存可能导致模块解析异常,执行以下操作:

  • 删除node_modules和dist目录:
    rm -rf node_modules dist
    
  • 重新安装依赖:
    npm install
    # 或 yarn install
    
  • 重启开发服务:
    npm run start
    # 或 yarn start
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:10:12