node.js - 如何在 macOS (mojave 10.14) 上优雅地停止 NodeJS 服务器监听器?

标签 node.js macos

我正在学习nodejs。我按照指南 here在官方网站上并创建了 app.js。这是一个简单的应用程序,它创建一个监听特定端口的 HTTP 服务器。

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

我使用的是 macOS Mojave 10.14。我通过终端执行此操作,服务器开始监听。 现在没有优雅的方式可以离开。 我试过了,
1. process.exit() - 没有效果
2. Command + C - 无效果(仅发出错误提示音)
3. Command + D - 仅将终端发送到后台,但进程仍在运行。

只剩下打开新终端并杀死它的选项 Kill -9 PID 或 Killall Node 。 (这不是优雅的方式)

有没有一种优雅的方式来退出这个 Node 进程?

附注另一个问题是,当您通过其他终端实例终止进程时,服务器进程运行时传递的命令(选项 1 到 3)将在启动服务器进程的终端上执行。例如
1. term 1 -> 服务器进程由 Node 启动 -> 尝试通过上面列出的选项 1 到 3 关闭进程,
2. term 2 -> 杀死所有 Node
3. 在 term 1 -> 服务器进程死亡 -> 执行选项 1、2 和 3 中的命令。我不明白为什么会发生这种事。

最佳答案

要终止 UNIX 系统中的前台进程,请按 Ctrl+c。请勿将其与 ⌘ Command 键混淆。

关于node.js - 如何在 macOS (mojave 10.14) 上优雅地停止 NodeJS 服务器监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56034574/

相关文章:

node.js - 三个在 Node.js 上使用 JSONLoader

javascript - 如何使用需要两种异步方法的 Node/ express 处理请求

swift - 如何检测 Homebrew 公式中的平台?

macos - 如何从货币代码中获取 "locale"?

macos - 更改 OS X 上目录中所有文件的文件扩展名

objective-c - 单击关闭按钮时终止应用程序

javascript - NodeJS 中的回调函数如何工作?

javascript - 使用 Express-Validator 时如何向客户端返回 Multer 错误?

node.js - 无法通过提供 req.body 创建模型

c++ - Xcode 错误 : “EXC_BAD_ACCESS”