这是由于执行子进程存在安全漏洞,因此在18.x, 20.x, 21.x版本中直接禁止了。
详见:https://nodejs.org/en/blog/vulnerability/april-2024-security-releases-2
需要在报错的包对应的scripts/install.js
文件中加上shell: true
:
'use strict'
const os = require('os');
const path = require('path');
const spawn = require('child_process').spawn;
const gypArgs = ['rebuild'];
if (process.env.NODE_PTY_DEBUG) {
gypArgs.push('--debug');
}
const gypProcess = spawn(os.platform() === 'win32' ? 'node-gyp.cmd' : 'node-gyp', gypArgs, {
shell: true,
cwd: path.join(__dirname, '..'),
stdio: 'inherit'
});
gypProcess.on('exit', function (code) {
process.exit(code);
});
2024年12月24日小于 1 分钟