如何在Node.js中退出程序

2298

如何退出Node.js进程?即终止该进程的命令是什么?


使用的命令为:Ctrl + C

2
这里有一个如何操作的指南:https://nodejs.dev/learn/how-to-exit-from-a-nodejs-program - Lelo
22个回答

11

退出

let exitCode = 1;
process.exit(exitCode)

有用的退出代码

1 - 一般错误的代表 
2 - shell内建用法不当 (依据Bash文档) 
126 - 无法执行命令调用 
127 - “找不到命令” 
128 - exit参数无效 
128+n - 致命错误信号“n”
130 - 脚本被Control-C中止 
255\* - 退出状态超出范围

请考虑更新您的答案,https://nodejs.org/api/process.html#process_process_exit_code - Cmag

8

如果你想要在代码中退出程序,可以使用 process.exit([errorcode]) 命令,其中 [errorcode] 是一个可选的整数(如果不传入参数,默认为 0 表示成功退出)。

如果你正在使用 Read Eval Print Loop (REPL),可以使用 Ctrl + D 或者输入 .exit 命令退出。

另外,在 Windows 或 Linux 上,你也可以使用 Ctrl + CCtrl + C 命令退出程序。

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


2
在 Mac 上,两个控制字符 c 也起作用,至少在我的机器上是这样的:node --versionv0.10.18 - msouth
在 Mac 上,Control-C 似乎无法取消已经计划的操作,而 ctrl-z 则可以立即终止进程。 - jorisw

3

作为全局对象,进程(process)不需要导入任何模块。以下函数用于退出或终止当前节点进程。

process.exit(code)

process.kill(process.pid)

process.abort()


3

打开命令行终端,该终端需要在node应用程序运行的位置,并按下Ctrl + C

如果你想从代码中退出一个Node.js应用程序,

process.exit(); // graceful termination 
process.exit(1); // non graceful termination 

1
process.exit永远不会优雅地退出。省略代码将只使用process.exitCode ?? 0 - CherryDT

3
我能够在 Windows 10 上通过 Git Bash shell 直接输入 taskkill -F -IM node.exe 命令来终止所有的 node 进程,这会一次性结束我电脑上所有的 node 进程。我发现我也可以使用命令 taskkill //F //IM node.exe。不确定为什么这两种符号 -// 在这种情况下都起作用。希望能对你有所帮助!

2
这是由taskkill本身引起的。您正在终止进程本身。此外,一个单独的/就足够了。 - Paul Stelian

1

Node.js中的退出方式有两种:

  • 显式调用process.exit()
  • 或者,如果nodejs事件循环完成了所有任务,没有剩余任务可执行。那么,node应用程序将自动退出。

它是如何工作的?

如果你想强制执行循环停止进程,可以使用全局变量process,它是EventEmitter的实例。因此,当你调用process.exit()时,实际上是触发了exit事件,立即结束所有任务,即使还有异步操作未完成。

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


1

ctrl+C 终止当前进程
ctrl+C 按两次退出REPL shell
ctrl+c 退出REPL SHELL


1
import mongosse from 'mongoose'
import dotenv from 'dotenv'
import colors from 'colors'
import users from './data/users.js'
import products from './data/products.js'
import User from './models/userModel.js'
import Product from './models/productModel.js'
import Order from './models/orderModel.js'
import connectDB from './config/db.js'

dotenv.config()

connectDB()

const importData = async()=>{
try{
    await Order.deleteMany()
    await Product.deleteMany()
    await User.deleteMany()

    const createdUsers = await User.insertMany(users)
    const adiminUser = createdUsers[0]._id

    sampleProducts = products.map(product =>{
        return {...product, user:adiminUser }
    })
    await Product.insertMany(sampleProducts)

    console.log('Data Imported!'.green.inverse)
    process.exit()      //success and exit

}catch(error){
    consolele.log(`${error}`.red.inverse)
    process.exit(1)   //error and exit

}

}

在这里,我正在为数据库填充一些集合,如果在try块中没有出现任何错误,那么我们将使用process.exit()退出,并显示成功消息。如果有错误,则需要使用参数1退出并显示失败消息,如此处理:process.exit(1)。
额外信息:在这里退出意味着退出典型的Node.js程序。例如,如果此代码位于名为dbOperations.js的文件中,则process.exit将退出并且不会运行在process.exit之后的任何代码。

0
通常你只需要按下CTRL + C

0
你可以使用 process.exit([code]) 函数。
如果你想要退出而不是 '失败',你可以使用代码 0:
process.exit(0);

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

process.exit(1);

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接