8

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

node app.js

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

Ubuntu上的示例我使用命令

nohup 

如何在窗口上这样做

4

4 回答 4

13

您可以使用pm2使进程在后台运行

pm2 start app.js --watch

这将启动该过程,还将查找文件中的更改。更多关于手表标志

于 2016-10-06T06:09:24.283 回答
1

节点蒙#ftw。在 Windows 上,Forever 并没有真正观察文件,而是随便观察它们,而 pm2 每次加载页面时都会重新启动服务器。

这些工具中的每一个都类似地工作,并且每个安装都与接受的答案一样。例如:

npm install nodemon -g

这会在全局范围内安装 nodemon,并且要使用它,您只需导航到您的项目文件夹并输入:

nodemon

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

forever nodemon --exitcrash 

Nodemon 适合开发,尤其是在 Windows 上,而 Forever 和 pm2 更适合于 Linux 上的生产环境。

于 2016-10-06T12:26:03.710 回答
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-一个脚本/

于 2021-03-18T03:50:42.317 回答
-3

不,你不能。

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

一旦你关闭命令提示符。您的服务只会在那一刻停止/终止。因为节点在运行 :http.createServer().listen(port)app.listen(port). 所以这使得它在本质上是独立的。

因此,一旦您关闭正在运行的服务器上的命令提示符,所有服务都会在那个时刻停止。

于 2016-10-06T05:23:16.390 回答