我有一个函数,我用它来调用一个命令脚本:
function cli(args, cwd) {
return new Promise(resolve => {
exec(
`node ${path.resolve("./index")} ${args.join(" ")}`,
{ cwd },
(error, stdout, stderr) => {
resolve({
code: error && error.code ? error.code : 0,
error,
stdout,
stderr
});
}
);
});
}
在一些调用中,Jest会记录以下内容:
Jest has detected the following 1 open handle potentially keeping Jest from exiting:
● PROCESSWRAP
255 | function cli(args, cwd) {
256 | return new Promise(resolve => {
> 257 | exec(
| ^
258 | `node ${path.resolve("./index")} ${args.join(" ")}`,
259 | { cwd },
260 | (error, stdout, stderr) => {
at exec (index.spec.js:257:5)
at cli (index.spec.js:256:10)
at Object.cli (index.spec.js:89:24)
在使用exec
时,我是否需要执行某种类型的终结,以使句柄关闭?
对于完整上下文this is the jest test script that contains the cli
function。
1条答案
按热度按时间xoefb8l81#
我遇到了同样的问题,看起来你应该
unref()
子进程。看起来kill()
发送了一个终止信号,但子进程仍然与父进程通信,因此通信被遗留下来,jest正在检测。不确定我是否正确理解了一切是如何工作的,但至少这为我解决了这个问题: