1. 报错
commander@12.0.0: The engine "node" is incompatible with this module. Expected version ">=18". Got "16.17.0"
2. 报错场景
拉取一个 gitlab 需要我维护的项目,这个项目使用的 taro 3.2.12 版本。我本地已存在这个版本的项目,然后在执行 yarn install 的时候报错。
3. 分析报错
安装的时候需要使用的 commander 的版本是 12.0.0,而和 commander@12.0.0 相兼容的 node 的版本是 >=18,我当前本地的 node 版本是 16.17.0。也就是说 commander 的版本和 node 的版本不兼容!
4. 解决办法
4.1 升级 node
最简单的解决方案是将Node.js版本升级到18或更高版本。您可以从【node 官方网站】下载最新版本(https://nodejs.org/)。安装后,您可以通过在终端中运行“node-v”来检查新版本。
4.2 降级 commander
如果升级 node 不可行,另一种选择是使用与 node 16.17.0兼容的 commander 模块的早期版本。您可以在模块的文档中或通过查看其发行说明找到兼容版本。
4.3 忽略引擎检查
yarn config set ignore-engines true
用于配置 yarn 在安装依赖包时忽略引擎检查。通常,yarn 在安装包时会检查包的引擎版本是否与当前环境相同,如果不同,则会报错。使用这个命令可以忽略这种版本检查,从而避免因为引擎版本不兼容而在安装依赖包时产生的问题。
4.3.1 注意
忽略引擎检查可能会导致一些不可预测的问题,因此在使用这个命令时需要谨慎。例如,即使在 yarn 下载时与node 版本无强关联,如果在打包时 node 版本不正确,也可能会导致打包失败。
5. 总结
- 由于我本地已存在当前版本的 taro 项目,因此我可以确认是不会相互影响的,因此我选择了方案三,执行
yarn config set ignore-engines true
,来忽略引擎检查。 - 解决问题的方法很多,找到合适自己的最简单的方法就好。本文只是做个记录,方便以后遇到类似问题查找。