用于退出的命令是什么?(即终止Node.js进程)
当前回答
REPL(命令行)
按ctrl+c两次键入退出并按回车键
脚本文件
process.exit(code)
当不再挂起异步操作时,节点通常会退出,代码为0。
process.ext(1)应用于退出并显示故障代码。这将允许我们推断节点未正常关闭,并被强制关闭。
还有其他出口代码,如
3-内部JavaScript分析错误(非常罕见)
5-v8 javascript引擎中的致命错误
9-参数无效
有关完整列表,请参阅节点退出代码
其他回答
如果您在Unix终端或Windows命令行中,并希望退出节点REPL,请选择。。。
按Ctrl+C两次,或键入.ext并按Enter键,或在行开头按Ctrl+D(仅限Unix)
在命令行中,.ext是您想要的:
$ node
> .exit
$
它记录在REPL文档中。REPL(Read Eval Print Loop)是Node命令行的名称。
在正常程序中,使用process.ext([code])。
REPL(命令行)
按ctrl+c两次键入退出并按回车键
脚本文件
process.exit(code)
当不再挂起异步操作时,节点通常会退出,代码为0。
process.ext(1)应用于退出并显示故障代码。这将允许我们推断节点未正常关闭,并被强制关闭。
还有其他出口代码,如
3-内部JavaScript分析错误(非常罕见)
5-v8 javascript引擎中的致命错误
9-参数无效
有关完整列表,请参阅节点退出代码
这取决于您愿意退出node.js进程的原因,但无论如何,process.exit()是最后要考虑的选项。引用文档:
需要注意的是,调用process.exit()将强制即使仍有尚未完全完成的未决异步操作,包括process.stdout和process.stderr的I/O操作。在大多数情况下,实际上不需要调用process.exit()显式。Node.js进程将自行退出如果在事件循环中没有附加的待处理工作。这个process.exitCode属性可以设置为告诉进程哪个退出当进程正常退出时使用的代码。
让我们讨论一下您可能愿意退出node.js进程的原因,以及您应该避免process.exit()的原因:
案例1-执行完成(命令行脚本)
若脚本已经结束,而节点解释器并没有退出,则表示某些异步操作仍处于挂起状态。此时使用process.exit()强制进程终止是错误的。最好尝试理解是什么阻碍了脚本以预期的方式退出。当您解决这个问题时,您可以使用process.exitCode将任何结果返回给调用进程。
情况2-因外部信号(SIGINT/SIGTERM/其他)而终止
例如,如果你愿意优雅地关闭快递应用程序。与命令行脚本不同,express应用程序保持无限运行,等待新的请求。process.exit()在这里将是一个糟糕的选项,因为它将中断正在处理的所有请求。其中一些可能是非幂等的(UPDATE,DELETE)。客户端永远不会知道这些请求是否在服务器端完成,这可能是客户端和服务器之间数据不一致的原因。唯一好的解决方案是告诉http服务器停止接受新请求,并等待挂起的请求完成server.close():
var express = require('express');
var app = express();
var server = app.listen(80);
process.on( 'SIGTERM', function () {
server.close(function () {
console.log("Finished all requests");
});
});
如果它仍然没有退出-请参阅案例1。
案例3-内部错误
抛出错误总是更好的,您将得到格式良好的堆栈跟踪和错误消息。较高级别的代码总是可以决定是否可以处理错误(捕获)或让它使进程崩溃。另一方面,process.ext(1)将无声地终止进程,并没有机会从中恢复。这可能是process.exit()的唯一“好处”,您可以确定该进程将被终止。
由于进程是全局对象,所以不需要导入任何模块。以下函数退出或终止当前节点进程。
process.ext(代码)process.cill(process.pid)process.abourt()
推荐文章
- 检查已安装的angular-cli版本?
- 如何将Blob转换为JavaScript文件
- 如何用Express/Node以编程方式发送404响应?
- 如何安装包从github回购在纱线
- 什么时候.then(success, fail)被认为是承诺的反模式?
- 自动HTTPS连接/重定向使用node.js/express
- 在nodejs http中body在哪里。得到回应?
- 如何在猫鼬排序?
- Nodemon错误:“已达到文件监视器数量的系统限制”
- 如何使webpack开发服务器运行在端口80和0.0.0.0使其公开访问?
- 如何在node.js模块中访问和测试内部(非导出)函数?
- 如何将base64编码的映像保存到磁盘?
- 在用nodejs和express创建的REST API中设置响应状态和JSON内容的正确方法
- 如何获得请求路径与表达请求对象
- 节点和错误:EMFILE,打开的文件太多