gpt4 book ai didi

node.js - 除非使用 tskill,否则 Node 进程不会退出

转载 作者:太空宇宙 更新时间:2023-11-03 22:25:50 25 4
gpt4 key购买 nike

这很奇怪。

作为引用,我在 Win 10 上使用 MinTTY Git Bash。另外,我的 Node 版本是 v6.11.3 ,我的 npm 版本是 3.10.10 。另外,"express": "^4.16.1" .

我从来没有遇到过 express 服务器突然不关闭的问题。我已经使用它有一段时间了,直到今天我才开始遇到这个问题。

我照常做ctrl+c关闭服务器并执行 npm start如果我做了任何改变。完成此操作后,我收到 EADDRINUSE 错误。我用谷歌搜索了又搜索,最后发现杀死它的唯一方法就是使用 tskill <pid> .

我已经尝试过taskkill , ps ,以及基本上我可以在 Git Bash 上使用的所有其他解决方案。 tskill是唯一有效的,并且使用 netstat -a -o -n查看进程列表及其 PID。

在对错误处理和信号进行一些研究后,我确定应该添加 process.on('SIG<whatever>', system.exit(0));行以允许进程完全退出。

我已经尝试过SIGINT , SIGQUIT , SIGKILL , SIGUSR1 , SIGUSR2 , SIGSTOP ,和SIGTSTP 。它们都会自动关闭进程,授予成功,但没有我的输入,因此服务器永远不会运行。

这是我的基本应用程序:

const express = require('express');
const app = express();

var config = require('./config')(process.env.NODE_ENV);
var appPort = process.env.PORT || config.port;

app.listen(appPort, function () {
console.log('UAction Test Server Running on Port ' + appPort + '!');
});

//process.on('SIGTSTP', console.log('Process Interrupted. Exiting...'), process.exit(0));

我真的不知道该去哪里。让我知道您需要的任何信息。如果我尝试某件事但它不起作用/确实起作用,我将为其他可能遇到问题的人更新此主要帖子。

我想知道的是:a)如何阻止这种情况在本地发生?或者如果没有,则 b) 如何在我的应用程序中实现正确的关闭?

编辑:我用我拥有的另一个应用程序尝试了此操作,它做了同样的事情。

最佳答案

Here is the issue on Node (even though it ended up not being Node's fault).

问题最终是MinTTY。我不知道为什么,但在安装 Git 时使用 CMD 可以让它完美地工作。以下是我的设置,供遇到此问题的任何人使用:

  • 仅在 Git Bash 中使用 Git
  • 使用 OpenSSL 库
  • checkout Windows 风格,提交 Unix 风格的行结尾
  • 使用默认控制台窗口 (CMD)

  • 启用文件系统缓存

  • 启用 Git 凭据管理器
  • 禁用符号链接(symbolic link)

(我明天会将其标记为答案,愚蠢的 StackOverflow)

关于node.js - 除非使用 tskill,否则 Node 进程不会退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46636083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com