安装ember-cli@2.9.1后执行ember命令报错,请求协助解决
解决ember-cli@2.9.1执行
ember --version时报"Invalid Version: 2023.01.30.00"错误 问题场景
- 原使用最新版Ember正常,卸载后全局安装
ember-cli@2.9.1 - 当前Node版本:v10.24.1
- 执行
ember --version或ember -v时触发错误,核心报错信息:
WARNING: Node v10.24.1 has currently not been tested against Ember CLI and may result in unexpected behaviour. Invalid Version: 2023.01.30.00 TypeError: Invalid Version: 2023.01.30.00 at new SemVer (/Users/*****/.nvm/versions/node/v10.24.1/lib/node_modules/ember-cli/node_modules/semver/semver.js:323:11) at Range.test (/Users/*****/.nvm/versions/node/v10.24.1/lib/node_modules/ember-cli/node_modules/semver/semver.js:1203:15) at Function.satisfies (/Users/*****/.nvm/versions/node/v10.24.1/lib/node_modules/ember-cli/node_modules/semver/semver.js:1257:16) at /Users/*****/.nvm/versions/node/v10.24.1/lib/node_modules/ember-cli/lib/models/watcher.js:116:18
问题根源
ember-cli@2.9.1依赖的旧版semver库仅支持标准语义化版本号(如x.y.z),无法解析日期格式的版本号(比如Watchman常用的YYYY.MM.DD.XX格式)。当系统中安装的Watchman是这类日期版本时,版本校验逻辑会直接抛出错误。
解决方案
方案1:降级Watchman到兼容版本
如果使用Homebrew管理包:
- 卸载当前Watchman:
brew uninstall watchman - 安装采用标准语义化版本的旧版Watchman(如3.x系列):
brew install watchman@3 - 强制链接该版本到全局:
brew link --force watchman@3
方案2:修改ember-cli源码跳过版本校验
- 找到全局ember-cli的安装路径:
npm list -g ember-cli - 进入路径下的
lib/models/目录,编辑watcher.js文件 - 定位到第116行左右的版本校验代码(类似
if (semver.satisfies(watchmanVersion, this.WATCHMAN_VERSION_RANGE))),直接注释掉这段校验逻辑,或修改为始终返回true跳过检查
方案3:切换到ember-cli@2.9.1推荐的Node版本
ember-cli@2.9.1官方推荐Node 4.x或6.x版本,v10.x未经过测试可能引发额外问题:
- 使用nvm切换到Node 6.x:
nvm install 6 nvm use 6 - 重新全局安装ember-cli@2.9.1:
npm install -g ember-cli@2.9.1
内容的提问来源于stack exchange,提问作者Ragesh Kr
相关产品推荐
相关产品推荐

