如何在 window 服务器的后台进程中 运行 节点 js 文件?
How to run node js file in background process on window server?
我正在创建一个 node.js 项目并将其上传到我的 window 服务器以为移动应用程序提供 api 服务。
当我打开命令提示符并键入
node app.js
它 运行 正确,但是当我关闭命令提示符时,我的 node.js 服务器已停止 运行ning。
如何在关闭推荐提示时让它仍然运行ning?
示例 Ubuntu 我使用命令
nohup
如何在 window
上这样做
不,你不能。
即使您制作了 GUI 程序,您也需要通过控制台 运行 它。
并且只要您关闭命令提示符。您的服务只会在那一刻停止/终止。因为节点在 运行ning 时自己创建了一个服务器:http.createServer().listen(port)
或 app.listen(port)
。所以这使得它在本质上是独立的。
因此,一旦您关闭正在 运行ning 的服务器的命令提示符,所有服务都会在那一刻停止。
您可以使用 pm2
使进程 运行 在后台运行
pm2 start app.js --watch
这将启动进程,还将查找文件中的更改。
更多关于 watch flag
Nodemon #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。
这是一个更简单的答案,它直接切入正题,没有像上面描述的其他两个答案那样添加任何库或开销。要 运行 您的 Node.js 应用程序作为后台的 windowless 启动程序(这类似于 Linux 中的“nohup”),请修改此模板以适应并复制将其转换为 .VBS 脚本文件。然后将该文件复制到您的开始菜单启动文件夹(对于所有用户,这将是 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup),它会自动 运行。您在此处使用的 Visual Basic 技术是 (1) 通过首先更改 shell 对象的工作目录和 (2) 通知 [=25] 来准备 运行 Node.js 应用程序=] 到 运行 隐藏 window 中的 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/
我正在创建一个 node.js 项目并将其上传到我的 window 服务器以为移动应用程序提供 api 服务。 当我打开命令提示符并键入
node app.js
它 运行 正确,但是当我关闭命令提示符时,我的 node.js 服务器已停止 运行ning。 如何在关闭推荐提示时让它仍然运行ning?
示例 Ubuntu 我使用命令
nohup
如何在 window
上这样做不,你不能。
即使您制作了 GUI 程序,您也需要通过控制台 运行 它。
并且只要您关闭命令提示符。您的服务只会在那一刻停止/终止。因为节点在 运行ning 时自己创建了一个服务器:http.createServer().listen(port)
或 app.listen(port)
。所以这使得它在本质上是独立的。
因此,一旦您关闭正在 运行ning 的服务器的命令提示符,所有服务都会在那一刻停止。
您可以使用 pm2
使进程 运行 在后台运行pm2 start app.js --watch
这将启动进程,还将查找文件中的更改。 更多关于 watch flag
Nodemon #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。
这是一个更简单的答案,它直接切入正题,没有像上面描述的其他两个答案那样添加任何库或开销。要 运行 您的 Node.js 应用程序作为后台的 windowless 启动程序(这类似于 Linux 中的“nohup”),请修改此模板以适应并复制将其转换为 .VBS 脚本文件。然后将该文件复制到您的开始菜单启动文件夹(对于所有用户,这将是 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup),它会自动 运行。您在此处使用的 Visual Basic 技术是 (1) 通过首先更改 shell 对象的工作目录和 (2) 通知 [=25] 来准备 运行 Node.js 应用程序=] 到 运行 隐藏 window 中的 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/