假如云效这种有异常的,没直接中断,一直卡住了,怎么捕捉到这个异常呢让它中断呢?每次卡住很久。
build 时候也要加这个参数吗?
以下为热心网友提供的参考意见
在 package.json 的 “scripts” 部分,添加一个新脚本来处理异常情况。这个脚本可以定期检查进程是否处于活动状态,如果检测到异常,则触发中断。
"scripts": {
"dev": "node build/dev-server.js",
"start": "node build/dev-server.js",
"build": "set NODE_ENV=production && node build/build.js",
"e2e": "node test/e2e/runner.js",
"test": "npm run e2e",
"monitor": "node monitor.js"
},
"monitor": {
"script": "node monitor.js",
"description": "定期检查进程活动状态,发现异常时中断"
}
,创建一个名为 “monitor.js” 的文件,用于实现进程监控功能。在 monitor.js 中,你可以使用 “ps” 命令来检查进程是否处于活动状态。如果发现异常,你可以使用 “kill” 命令中断进程。
const { spawn } = require('child_process');
const ps = spawn('ps', ['ax']);
ps.stdout.on('data', (data) => {
const lines = data.toString().split('
');
for (const line of lines) {
if (line.includes('your_process_name')) {
console.log('进程活动正常');
} else {
console.log('发现异常进程,尝试中断');
const killProcess = spawn('kill', ['-9', 'your_process_id']);
killProcess.on('close', (code) => {
console.log(`进程中断成功,退出代码 ${code}`);
});
}
}
});
ps.stderr.on('data', (data) => {
console.error(`ps 命令执行失败:${data}`);
});
ps.on('close', (code) => {
console.log(`ps 命令执行结束,退出代码 ${code}`);
});
你需要将 “your_process_name” 和 “your_process_id” 替换为实际的进程名和 ID。在运行此脚本之前,请确保已经运行了 “start” 或 “build” 脚本。这样,monitor.js 才能正确检查进程活动状态。