我正在Nextjs API路由中执行此ChildProcess函数,但无法从中读取值。
const output = exec(
"curl -s -v https://test.com/index.php",
(err, stdout, stderr) => {
if (err) {
console.error(err);
process.exit(1);
} else {
var lines = stderr.split("\n");
var numLines = lines.length;
var i;
let regex = /Set\-Cookie:\ SESSIDe08a=[0-9A-Za-z]*;\ /i;
for (i = 0; i < numLines; i++) {
var line = lines[i];
if (regex.test(line)) {
let n = line.replace(/^.*SESSIDe08a=([^;]+);[.]+$/, "$1");
let l = n.replace(/^.*SESSIDe08a=/, "");
let a = l.split(" ");
let final = a[0].replace(";", "");
return final; // <=== I need this value
}
}
}
}
);
字符串
如何读取返回的final
值?
1条答案
按热度按时间yzuktlbb1#
由于你有一个回调函数,当你返回时,你返回的是回调函数,它不是向上传递的,而是从
exec()
返回的。你需要使用一个超出作用域的变量。然而,这样做的问题是执行会继续。你需要使用一个promise。参考this thread,然后:字符串
如果你有一个最新版本的Node,你应该能够在顶层使用
await
,否则你需要将它 Package 在一个async
函数中。