likes
comments
collection
share

nodejs 将node命令启动为windows服务运行(node-windows)

作者站长头像
站长
· 阅读数 40

前言

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
服务安装成功

nodejs 将node命令启动为windows服务运行(node-windows)

卸载服务

//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
评论
请登录