1. 故障现场
最近由于一些原因,从Mac OSX 迁移到 Windows 平台,在尝试运行基于vue-element-admin 项目时,发生了如下异常:
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@achrinza/node-ipc@9.2.2',
npm WARN EBADENGINE required: { node: '8 || 10 || 12 || 14 || 16 || 17' },
npm WARN EBADENGINE current: { node: 'v18.4.0', npm: '8.12.1' }
npm WARN EBADENGINE }
2. 问题分析
安装的node js 版本选择的是长期支持的稳定版本18.12.1 LTS
比对了Mac OSX 版本上的是v18.4.0 , 回退到相同版本问题依旧如此。
后来经过分析,发现,element-ui 的版本依赖锁定是在一个叫做package-locak.json
中,并且找到了相关配置。
"node_modules/@achrinza/node-ipc": {
"version": "9.2.2",
"resolved": "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz",
"integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==",
"dev": true,
"dependencies": {
"@node-ipc/js-queue": "2.0.3",
"event-pubsub": "4.3.0",
"js-message": "1.0.7"
},
"engines": {
"node": "8 || 10 || 12 || 14 || 16 || 17"
}
},
3.修复方案
package-lock.json 修改配置如下:
"node_modules/@achrinza/node-ipc": {
"version": "9.2.2",
"resolved": "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz",
"integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==",
"dev": true,
"dependencies": {
"@node-ipc/js-queue": "2.0.3",
"event-pubsub": "4.3.0",
"js-message": "1.0.7"
},
"engines": {
"node": "8 || 10 || 12 || 14 || 16 || 17 || 18"
}
},