nodejs 将node命令启动为windows服务运行(node-windows)
前言
windows执行node命令时,我们有时js需要做一件持续进行的事务,比如需要持续启动着的服务端,再比如需要持续添加内容进数据库。
用cmd启动就必须保持窗口不被关闭,这样肯定不是万全之策,这时候我们可以尝试将node命令启动为windows服务运行。
依赖包
在项目根目录导入node-windows依赖。
npm i node-windows
安装服务
假如我这里有一个文件database.js
,它做的事是将数据持续写进数据库。
如果我们需要在cmd用node database
启动的话,它会持续运行,而且为了它的功能运行我们不能关闭它,但是我们很难保证不会不小心关闭它,而且cmd还可能存在运行时卡住的问题。
我们现在只编写一个service.js
,就可以将它安装为windows服务运行,就没有这些烦恼了。
//service.js
import path from "path";
import nodeWindow from "node-windows";
const Service = nodeWindow.Service;
let svc = new Service({
name: "node_database", //名称
description: "添加数据进入数据库", //描述
script: path.resolve("./database.js"), //node执行入口文件
nodeOptions: ["--harmony", "--max_old_space_size=4096"],
});
svc.on("install", function () {
svc.start();
if(svc.exists){
console.log('服务安装成功')
}
});
svc.install();
然后执行用node运行一次该文件,执行安装结束即可。
node service.js
服务安装成功
卸载服务
//uninstall.js
import path from 'path'
import nodeWindow from 'node-windows'
const Service = nodeWindow.Service
let svc = new Service({
name: 'node_database', //名称
script: path.resolve('./index.js'), //node执行入口文件
nodeOptions: [
'--harmony',
'--max_old_space_size=4096'
]
});
svc.on('uninstall', function () {
if (!svc.exists) {
console.log('服务卸载完成');
}
});
svc.uninstall();
同样启动即可卸载服务
node uninstall.js
服务安装成功
记得修改相关内容时,可能需要重新卸载安装服务。
尾言
如果觉得文章还不错的话,欢迎点赞收藏哦,有什么错误或者意见建议也可以留言,感谢~
转载自:https://juejin.cn/post/7085893330214584333