Javascript 如何忽略child_process.exec生成的错误?
我正在从nodejs脚本执行shell脚本命令。其中一个命令是“npm install”,后面是运行nodejs文件索引文件的命令 npm install命令返回由节点gyp生成的错误。通常,此错误不会影响我的服务。但是,child_process.exec正在捕获它并停止脚本。我的问题是,如何触发exec命令并忽略返回的错误 下面是代码片段的一小部分Javascript 如何忽略child_process.exec生成的错误?,javascript,node.js,bash,shell,Javascript,Node.js,Bash,Shell,我正在从nodejs脚本执行shell脚本命令。其中一个命令是“npm install”,后面是运行nodejs文件索引文件的命令 npm install命令返回由节点gyp生成的错误。通常,此错误不会影响我的服务。但是,child_process.exec正在捕获它并停止脚本。我的问题是,如何触发exec命令并忽略返回的错误 下面是代码片段的一小部分 const exec = require('child_process').exec; exec("npm install", {
const exec = require('child_process').exec;
exec("npm install", {
cwd: serviceDirectory + gitRepo
},
(error1, stdout, stderr) => {
if(error1){
//this error is for testing purposes
util.log(error1);
}
//run the service
exec("node index.js",{
cwd: serviceDirectory + gitRepo + "/"
}, cb);
});
}
您可以使用try-catch来处理catch的错误,例如:
const { promisify } = require('util');
const exec = promisify(require('child_process').exec);
export default async function () {
const dataFormat = {
stdout: '',
stderr: '',
};
let cpu = dataFormat;
let diskUsed = dataFormat;
try {
cpu = await exec('top -bn1 | grep "Cpu(s)" | sed "s/.*, *\\([0-9.]*\\)%* id.*/\\1/"');
} catch (error) {
cpu.stderr = error.stderr;
}
try {
diskUsed = await exec("df -h | awk 'NR==2{printf $3}'");
} catch (error) {
diskUsed.stderr = error.stderr;
}
const payload = {
cpu,
diskUsed,
};
return payload
}
我必须承认,我没有安瑟尔。您是否尝试使用分离选项生成进程,并且没有stdio(忽略)而不是exe?也不起作用