Ember.js集成Torii认证时出现'ember is not defined'错误及弃用警告
问题分析与解决方案
问题根源
你遇到的ember is not defined崩溃错误,以及相关的弃用提示,核心原因是Torii 0.10.1依赖的ember-cli-babel@6.18.0版本过低。Ember 4.6.0已经不再默认暴露全局Ember变量,但旧版ember-cli-babel会把模块导入转译为全局Ember API调用,导致运行时找不到该全局变量,直接引发崩溃。
解决方案
1. 升级Torii到兼容Ember 4.x的版本
Torii 0.10.1是老旧版本,不支持Ember 3.24及以上版本(包括你用的4.6.0)。执行以下命令升级到最新兼容版:
npm install torii@latest --save-dev # 用yarn的话执行: yarn add torii@latest --dev
如果最新版仍有兼容问题,可以尝试安装torii@next尝鲜分支,或者查看Torii官方文档确认适配Ember 4.x的具体版本。
2. 确认依赖版本达标
升级完成后,检查项目依赖树,确保ember-cli-babel版本≥7.26.6:
# npm用户 npm ls ember-cli-babel # yarn用户 yarn list ember-cli-babel
确认Torii现在依赖的ember-cli-babel版本符合要求,避免旧版本残留。
3. 清理缓存并重启服务
升级依赖后,清理Ember和包管理器缓存,避免旧代码干扰:
# 清理Ember缓存 ember clear # 清理npm缓存 npm cache clean --force # 用yarn的话执行: yarn cache clean
之后重启开发服务器:
ember serve
补充说明
- 旧版ember-cli-babel(低于7.26.6)会自动将ES模块导入转译为全局
Ember调用,这种写法在Ember 3.x后期就被标记为弃用,Ember 4.x直接移除了全局Ember变量,所以才会触发崩溃。 - 如果升级Torii后仍有类似问题,排查项目中其他依赖是否也在使用旧版ember-cli-babel,逐一升级这些依赖即可。
内容的提问来源于stack exchange,提问作者hariharan baskaran
相关产品推荐
相关产品推荐

