Ember从3.*升级到4.12.2后出现Uncaught ReferenceError: Ember is not defined错误
Ember 3.* 升级至4.12.2后运行报错「Uncaught ReferenceError: Ember is not defined」
编译过程无异常,但应用运行时vendor.js抛出如下错误:
vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:98 Uncaught ReferenceError: Ember is not defined at a.callback (vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:98:389464) at a.exports (vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:1:2153) at a._reify (vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:1:2747) at a.reify (vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:1:2532) at a.exports (vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:1:2125) at a._reify (vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:1:2747) at a.reify (vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:1:2532) at a.exports (vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:1:2125) at a._reify (vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:1:2747) at a.reify (vendor.js?v=95293905-3319-4db8-8355-c1297659dfa6:1:2532)
以下是针对性排查和解决步骤:
- 调整依赖加载顺序:在
ember-cli-build.js中,确保Ember相关的app.import语句放在所有第三方依赖之前,避免其他库提前引用未加载的Ember全局对象。 - 排查插件兼容性:逐个禁用第三方Ember插件,重新构建运行,定位到引发问题的插件后,升级该插件至兼容Ember 4.x的版本,或替换为替代方案。
- 验证Auto Import配置:检查
package.json中ember-auto-import的版本是否适配Ember 4.12.2,必要时升级到最新兼容版本;同时确认配置未意外排除Ember核心模块。 - 彻底清理缓存重建:执行以下命令清除缓存后重新构建:
rm -rf node_modules dist tmp npm install ember build --environment=production - 强制暴露Ember全局变量:如果有代码依赖全局
Ember对象,在ember-cli-build.js中添加配置:app.import('vendor/ember.js', { exports: { 'ember': ['default', '*', 'Ember'] } });
内容的提问来源于stack exchange,提问作者deva
相关产品推荐
相关产品推荐

