如何在Node.js中退出

用于退出的命令是什么?(即终止Node.js进程)

SamStafan十三2020/03/13 16:06:13

节点js的退出有两种方式:

  • 显式调用process.exit()
  • 或者,如果nodejs事件循环已完成所有任务,则无事可做。然后,节点应用程序将自动退出。

怎么运行的?

如果要强制执行循环停止该过程,则可以使用EventEmitter实例的全局变量process因此,当您调用process.exit()时,您实际上会发出退出事件,事件立即结束所有任务,即使仍有异步操作尚未完成。

process.exit()将退出代码(整数)作为参数。代码0是默认值,这意味着它以“成功”退出。虽然代码1表示它以“失败”退出。

小宇宙樱2020/03/13 16:06:13

打开运行节点应用程序的命令行终端,然后按Ctrl + C

如果您想从代码中退出节点js应用程序,

process.exit(); // graceful termination 
process.exit(1); // non graceful termination 
JinJinTom2020/03/13 16:06:13

如果您想退出节点js应用程序,请编写

process.exit(1)

在你的代码中

Tony凯2020/03/13 16:06:13

如果您使用的是Windows,请转至“任务管理器”,然后转至“进程”,查找一个名为“节点”的进程,然后用鼠标右键单击该进程,然后单击“结束进程”选项。

梅番长2020/03/13 16:06:13

您可以使用process.exit([code])函数。

如果要退出而不会出现“失败”,请使用代码0

process.exit(0);

要退出并显示“失败”代码,1您可以运行:

process.exit(1);

失败的“失败”代码特定于应用程序。因此,您可以使用自己的约定。

伽罗Tom猪猪2020/03/13 16:06:13

退出

let exitCode = 1;
process.exit(exitCode)

有用的退出代码

1-通用错误的Catchall
2-滥用shell内置函数(根据Bash文档)
126-调用的命令无法执行
127-“找不到命令”
128-无效的参数退出
128 + n-致命错误信号“ n”
130-脚本被Control-C终止
255 \ *-退出状态超出范围
阿飞泡芙2020/03/13 16:06:13

由于流程是全局对象,因此不需要导入任何模块。以下函数退出或终止当前节点进程。

process.exit(代码)

process.kill(process.pid)

process.abort()

老丝2020/03/13 16:06:13

Ctrl + C两次或.exit

> 
(To exit, press ^C again or type .exit)
> 
梅西里2020/03/13 16:06:13

通过键入,我能够使我的所有节点进程直接从Windows 10的Git Bash shell中消失taskkill -F -IM node.exe-这一次结束了我计算机上的所有节点进程。我发现我也可以使用taskkill //F //IM node.exe不知道为什么都-//工作在这方面。希望这可以帮助!

小小乐2020/03/13 16:06:13

从代码中,您可以使用process.exit([errorcode])where [errorcode]是可选的整数(0默认值表示成功)。

如果使用的是“ 读取评估打印循环”(REPL),则可以使用Ctrl+ D或键入.exit

另外,在Windows或Linux上,您可以使用Ctrl+ CCtrl+C

在Mac上,命令为Ctrl+ ZCtrl+Z

小胖LEY西门2020/03/13 16:06:13

正如@Dominic指出的那样,抛出未捕获的错误是更好的做法,而不是调用process.exit([code])
process.exitCode = 1; throw new Error("my module xx condition failed");

泡芙十三2020/03/13 16:06:13

REPL(命令行)

  • ctrl + c 两次

  • 键入.exit,然后按Enter

脚本文件

process.exit(code)

当没有其他异步操作挂起时,节点通常以代码0退出

process.exit(1) 应该使用失败代码退出。这将允许我们推断该节点未正常关闭,而被迫关闭。

还有其他退出代码,例如

3-内部JavaScript解析错误(非常罕见)

5-v8 JavaScript引擎中的致命错误

9-无效的参数

有关完整列表,请参见节点退出代码

古一斯丁猴子2020/03/13 16:06:13

如果您在Unix终端或Windows命令行中并想要退出Node REPL,请选择...

  • Ctrl+ C两次,或
  • 输入.exit并按Enter,或
  • 在行首Ctrl+ D(仅限Unix)
村村AL2020/03/13 16:06:12

从官方的nodejs.org文档中:

process.exit(code)

用指定的代码结束进程。如果省略,则退出使用“成功”代码0。

要以“失败”代码退出:

process.exit(1);
神无达蒙JinJin2020/03/13 16:06:12

在命令行中,.exit您需要的是:

$ node
> .exit
$

它记录在REPL docs中REPL(Read-Eval-Print-Loop)是所谓的Node命令行。

在普通程序中,使用process.exit([code])

YOC400596082020/03/13 16:06:12

调用全局process对象的exit方法:

process.exit()

从文档:

process.exit([code])

以指定的结束进程code如果省略,则退出使用“成功”代码0

要以“失败”代码退出:

process.exit(1);

The shell that executed node should see the exit code as 1.

ㄏ囧囧ㄟ2020/03/13 16:06:12

刚一说明,使用process.exit([number])不推荐的做法。

调用process.exit()将强制进程尽快退出,即使仍有尚未完成的异步操作(包括对process.stdout和process.stderr的I / O操作)也未完成。

在大多数情况下,实际上没有必要显式调用process.exit()。如果事件循环中没有其他待处理的工作,则Node.js进程将自行退出。可以设置process.exitCode属性,以告知进程正常退出时要使用哪个退出代码。

例如,以下示例说明了process.exit()方法滥用,这可能导致打印到stdout的数据被截断并丢失:

// This is an example of what *not* to do:
if (someConditionNotMet()) {
  printUsageToStdout();
  process.exit(1);
}

之所以有问题,是因为有时Node.js中对process.stdout的写入是异步的,并且可能在Node.js事件循环的多个滴答中发生。但是,调用process.exit()会强制该进程退出,然后再执行对stdout的其他写入操作。

该代码应直接设置process.exitCode,而不是直接调用process.exit(),并通过避免为事件循环安排任何其他工作来允许进程自然退出:

// How to properly set the exit code while letting
// the process exit gracefully.
if (someConditionNotMet()) {
  printUsageToStdout();  
  process.exitCode = 1;
}