如何在窗口服务器上的后台进程中运行节点js文件?

时间:2016-10-06 04:43:58

标签: node.js batch-file cmd window-server

我创建了一个node.js项目并将其上传到我的窗口服务器,为移动应用程序提供api服务。 当我打开命令提示符并键入

node app.js

它运行正常,但是当我关闭命令提示符时,我的node.js服务器停止运行。 当我关闭推荐提示时,如何让它仍然运行?

关于Ubuntu的例子我使用命令

nohup 

如何在窗口上执行此操作

4 个答案:

答案 0 :(得分:11)

您可以使用pm2

在后台运行流程
pm2 start app.js --watch

这将启动该过程,并且还将查找文件中的更改。 有关watch flag

的更多信息

答案 1 :(得分:1)

Nodemon #ftw。在Windows上,Forever并不像在随意观察文件那样真正地看文件,而pm2每次加载页面时都会重新启动服务器。

这些工具中的每一个都工作方式类似,每个工具的安装方式与接受的答案相同。 E.g:

npm install nodemon -g

这将全局安装nodemon,使用您只需导航到项目文件夹并输入:

nodemon

(假设您的项目有app.js文件)。您可以添加-w开关,就像在Forever和pm2中一样,但是如果您只是想要观看所有文件,则可以省略它。要使用Forever在后台运行nodemon,您可以运行:

forever nodemon --exitcrash 

Nodemon适合开发,特别是在Windows上,而Forever和pm2更适合在Linux上进行生产。

答案 2 :(得分:0)

这是一个更简单的答案,它直接切入正题,没有任何添加的库或开销,就像上面描述的其他两个答案一样。要在后台将 Node.js 应用程序作为无窗口启动程序运行(这类似于 Linux 中的“nohup”),请修改此模板以适应并将其复制到 .VBS 脚本文件中。然后将该文件复制到您的“开始”菜单启动文件夹(对于所有用户,这将是 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup),它将自动运行。您在 Visual Basic 中使用的技术是 (1) 通过首先更改 shell 对象的工作目录来准备运行 Node.js 应用程序和 (2) 通过以下方式通知 shell 在隐藏窗口中运行 Node.js 应用程序在运行函数后立即添加一个“, 0”:

Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.CurrentDirectory = "C:\path-to-your-node-js-app\"
objShell.Run("""node"" your-app.js"), 0
Set objShell = Nothing

参考文献:

https://keestalkstech.com/2016/07/start-nodejs-app-windowless-windows/ https://devblogs.microsoft.com/scripting/how-can-i-change-the-working-folder-of-a-script/

答案 3 :(得分:-2)

不,你不能。

即使您制作了GUI程序,也需要通过控制台运行它。

一旦关闭命令提示符。您的服务将仅在此时停止/终止。因为节点在运行时会自行创建服务器:http.createServer().listen(port)app.listen(port)。所以这使它在性质上独立。

因此,只要您关闭运行服务器的命令提示符,所有服务就会在此时停止。