代码之家  ›  专栏  ›  技术社区  ›  TomáÅ¡ Zato

如何找出node.js退出的原因?

  •  2
  • TomáÅ¡ Zato  · 技术社区  · 6 年前

    我经常在编写各种node.js脚本时遇到这个问题。一切完成后,他们不会离开。通常,它是一个未关闭的套接字或readline接口。

    当剧本越来越大,这真的很难发现。有什么工具可以告诉我nodejs在等什么吗?我在请求一个通用的解决方案,它可以帮助调试nodejs的所有情况,当nodejs应该退出时,它不会退出。

    样品:

    附件I.-即使在删除侦听器之后处理stdin块节点

    const readline = require('readline');
    readline.emitKeypressEvents(process.stdin);
    if (typeof process.stdin.setRawMode == "function")
        process.stdin.setRawMode(true);
    
    
    const keypressListener = (stream, key) => {
        console.log(key);
        process.stdin.removeListener("keypress", keypressListener);
    }
    process.stdout.write("Press any key...");
    process.stdin.on("keypress", keypressListener);
    

    展品II。- readline 如果忘记关闭接口,则阻止节点

    const readline = require('readline');
    
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
    

    附件三-忘记的setinterval也会阻塞节点,祝你找到它

    setInterval(() => { }, 2000);
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   TomáÅ¡ Zato    6 年前

    why-is-node-running 工作?似乎正是你所需要的。