我有一个node.js应用程序,我想作为Windows服务运行,我正在使用os-service来尝试实现它。
该服务看似正确安装,Windows服务管理控制台提供有关它的信息:
在列表中:
Name: wibble
Description: (blank)
Status: (blank)
Startup Type: automatic
Log On As: Local System
在属性/常规窗格中: 可执行文件的路径:
"C:\Program Files\nodejs\node.exe" "C:\path\to\app.js" "--run"
尝试使用powershell启动此服务
Start-Service wibble
生成一条错误消息,其中包含:无法在计算机上启动服务wibble'。'
尝试从管理界面的“启动服务”链接启动此服务与服务管理器中选择的服务会产生不同的错误消息: Windows无法启动本地计算机上的轻触服务。错误1053:服务未及时响应启动或控制请求。
以下工作,从与应用程序相同的文件夹中的powershell执行时。客户端可以成功连接并使用该应用程序:
node app.js --run
但是,powershell会在此时停止,直到CTRL + C停止服务。
这是我添加到应用程序中的JS,以使其作为服务运行:
var service = require('os-service');
var fs = require('fs');
process.chdir(__dirname);
if (process.argv[2] == '--run') {
var fn = process.env.LOCALAPPDATA + '/path/to/wibble.log';
var logStream = fs.createWriteStream (fn);
service.run (logStream, function () {
'use strict';
service.stop (0);
});
// rest of app here
}
module.exports = app
希望我忽视了一些愚蠢的事情。感谢你能不能发现它!