node.js程序配置成windows服务,开机自启动
1、安装windows-shortcuts模块:(最好安装到你node.js程序所在目录)
安装方法:npm install windows-shortcuts
2、配置node.js工程的package.json文件
"dependencies": {
"windows-shortcuts":"*"
}
3、编写一个可以启动node.js程序的bat文件:
比如要依次启动c:\nodejs\example 下的a.js、b.js和c.js。
(1)依次编写3个能启动a.js、b.js和c.js这三个服务的bat脚本文件;
分别是如下:
a.bat内容:
cd C:\nodejs\example
node a.js
b.bat内容:
cd C:\nodejs\example
node c.js
c.bat内容:
cd C:\nodejs\example
node c.js
然后把3个bat脚本保存在任意一个目录下,比如保存在c:\nodejs\example\run_test目录下。
(2)编写一个bat脚本可以启动上述的3个bat脚本,命名为run_test.bat(名字自己随意起),内容如下:
cd C:\nodejs\example\run_test
start a.bat
start b.bat
start c.bat
4、编写一个js文件,用来配置开机自启,命名为start_up.js,程序如下(该程序来源于网络,非本人原创):
//配置node.js服务为windows服务,开机自启动
var shortcut = require('windows-shortcuts');
var fs=require("fs");
//windows下的开机启动
if(process.platform.match(/^win/)){
//开机启动目录
var startupMenu="";
//APPDATA目录中有Roming的是win7,win8等同类系统开机目录
if(/Roaming/.test(process.env.APPDATA)){
startupMenu=process.env.APPDATA+"\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\";
}else{
//winXp等同类系统开机目录
startupMenu=process.env.USERPROFILE+"\\「开始」菜单\\程序\\启动\\";
} //在目录下生成的快捷方式名称
var startupTarget=startupMenu+"智能家居系统.lnk"; /*注意更改*/
//要复制快捷方式过去的源程序
var sourcePrograme=__dirname+"\\run_test.bat"; /*注意更改*/
//存在就删除,不存在就创建
if(fs.existsSync(startupTarget)){
fs.unlink(startupTarget,function(err){
if(err){
console.error("取消开机启动出错",err);
}
else
{
console.log("取消开机启动成功");
}
})
}else{
shortcut.create(startupTarget,sourcePrograme,function(err){
if(err){
console.error("设置开机启动出错",err);
}
else
{
console.log("设置开机启动成功");
}
})
}
}
这里你只需要更改上述程序带有/*注意更改*/注释的文字就可以:
第一个/*注意更改*/注释的部分:定义快捷方式的名称;
第二个/*注意更改*/注释的部分:加载开机启动时启动的脚本。(注意:路径一定要对,上述程序所指目录为start_up.js同目录下的run_test.bat。所以一定要把你编写的脚本文件与start_up.js放在同一目录下。)
然后,在node命令行或者IDE中运行start_up.js即可。
5、查看是否配置成功
打开任务管理器,点击“启动”选项卡
窗口如图所示,表示配置成功。现在就可以重启电脑试一下效果了。这个windows服务启动还是比较慢的,它是等整个电脑状态稳定了,才开始执行的,所以开机后应该会等几秒,不要着急。当然这个也可能是视电脑情况而定。
