必须多次发送 SIGINT 才能关闭 Puppeteer 脚本

Having to send SIGINT multiple times for Puppeteer script to close

我是 node.js 的新手,所以我可能对异步函数有一些不了解的地方。我有一个小问题,我必须在注册 SIGINT 之前至少按两次 CTRL+C 。我希望只需要做一次。

在我的脚本中,我捕获了 SIGINT 并进行了一些清理,但是没有它它仍然会发生,所以我不确定这是否会影响它。一旦注册,我确实会看到一条日志消息。以下不是我的完整代码,因为它太长了。

const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
const puppeteer = require('puppeteer-extra');
const userAgent = require('user-agents');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

let browser;
let page;

function sigintHandler() {
    console.log("Handling interrupt.");
    process.exit();
}

process.on('SIGINT', sigintHandler); // Register sigint handler

(async () => {
    browser = await puppeteer.launch({
            headless: false,
            defaultViewport: null,
            args: ['--disable-features=site-per-process',
                   '--window-size=1920,1080']
        });
    page = (await browser.pages())[0];
})();

有谁知道这是否正常?如果不是,我该如何解决?

在注释掉大量代码并将其重新添加后,我意识到问题是由 readline 捕获 SIGINT 引起的。我用它来提示用户。将 proccess.on 替换为 rl.on 修复了它。