我正在按照指南here(监听SIGINT个事件)优雅地关闭我的Windows-8托管 node .js应用程序响应Ctrl+C或服务器关闭.

但Windows没有SIGINT个.我也try 了process.on('exit'),但似乎做任何有成效的事情都为时已晚.

在Windows上,这个代码给我:Error: No such module

process.on( 'SIGINT', function() {
  console.log( "\ngracefully shutting down from  SIGINT (Crtl-C)" )
  // wish this worked on Windows
  process.exit( )
})

在Windows上,此代码运行,但为too late to do anything graceful:

process.on( 'exit', function() {
  console.log( "never see this log message" )
})

Windows上是否有SIGINT个相同的事件?

推荐答案

您必须使用readline模块并监听SIGINT事件:

http://nodejs.org/api/readline.html#readline_event_sigint

if (process.platform === "win32") {
  var rl = require("readline").createInterface({
    input: process.stdin,
    output: process.stdout
  });

  rl.on("SIGINT", function () {
    process.emit("SIGINT");
  });
}

process.on("SIGINT", function () {
  //graceful shutdown
  process.exit();
});

Node.js相关问答推荐

如何在Node.js 中设置图表js的背景色

正在try 使用Azure Function App上载文件时未上载文件(&Q;)

Mongoose查询-如何根据当前查找ID获取其他集合并将其插入到当前查找中?

无法使用Sequelize连接AWS RDS

是否可以在MongoDB中比较和匹配引用文档中的字段

ForbidenError:使用Express.js的CSRF令牌无效

几个 lambda 共有的函数

Typescript typeRoots 未检测到类型定义

对 google api v3 的 Axios 请求返回加密(?)数据

如何使用来自前一阶段的另一个数组的聚合mongoose 在数组中添加字段

使用 Node.js 在 MongoDB 中搜索

如何为一个网站实现这 2 个网址.即 www.administrator.sitename.com 和 www.sitename.com?

如何使用 UglifyJS 缩小文件夹中的多个 Javascript 文件?

分块 WebSocket 传输

用于排除多个文件的 node.js glob 模式

Node.js 服务器中没有缓存

如何将子集合添加到 Firestore 中的文档?

Fluxible 中的脱水和再水合代表什么?

如何在express 中设置默认路径(路由前缀)?

在 Node.js 上使用 Connect 无法获取 /