创建了Windows服务来运行我的节点应用,但该服务在启动后几秒钟就停止了运行

时间:2018-08-27 17:56:56

标签: javascript node.js windows-services windows-server-2012 node-windows

这个主题上已经有一个主题(here),但是它并不能解决我的情况(大多数答案都提出了节点窗口的替代建议,而不是解决其创建的服务为何停止​​运行的问题) 。

就像标题中所说的那样,我使用node-windows包来创建服务(运行我的node应用程序脚本)。它在本地运行,但是当我将其安装在Windows 2012服务器上时,该服务会在启动后几秒钟后停止。

以下是在事件查看器中发现的错误:

  • 启动D:\ Program Files \ nodejs \ node.exe --harmony“ D:\ Program Files \ otherApps \ create-windows-service-for-nodejs \ node_modules \ node-windows \ lib \ wrapper.js”- -文件“ D:\ Program Files \ path \ to \ my \ application \ index.js” –log“ Node.js服务管理API包装器” –grow 0.25 –wait 1 –maxrestarts 3 –abortonerror n- -stopparentfirst未定义
  • 服务成功启动。
  • 开始D:\ Program Files \ path \ to \ my \ application \ index.js
  • D:\ Program Files \ path \ to \ my \ application \ index.js停止运行。
  • 意外退出后重新启动1250毫秒;尝试次数= 1
  • D:\ Program Files \ path \ to \ my \ application \ index.js停止运行。
  • 在意外退出后重新启动1562.5毫秒;尝试次数= 2
  • 子进程[5800-D:\ Program Files \ nodejs \ node.exe --harmony“ D:\ Program Files \ otherApps \ create-windows-service-for-nodejs \ node_modules \ node-windows \ lib \ wrapper .js“ --file” D:\ Program Files \ path \ to \ my \ application \ index.js“ –log” Node.js服务管理API包装器“ --grow 0.25 --wait 1 --maxrestarts 3- -abortonerror

这是我对节点窗口的实现:

var Service = require('node-windows').Service;

var svc = new Service({
  name:'Node.js Service Management API',
  description: 'The nodejs.org service management api.',
  script: 'D:\\Program Files\\nodeApps\\service-management-api\\server\\server.js'
});

svc.on('install',function(){
    svc.start();
    console.log('Install complete');
    console.log('The service exists: ', svc.exists)
  });
  

  svc.install();

关于如何修复此服务以使其保持“开启”状态的任何建议?这是我对节点窗口的实现吗?还是某些Windows Server 2012配置问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

这不是最令人满意的解决方案,但是我们通过简单地删除整个node-windows应用程序并从头开始解决了它。现在可以使用了。我们也将其嵌套在与此服务一起自动化的实际节点应用程序中,但是我认为这与它现在可以工作无关。这是处于最终状态的代码:

var Service = require('node-windows').Service;
 
// Create a new service object
var svc = new Service({
  name:'Node.js Service Management API',
  description: 'The nodejs.org service management api.',
  script: 'D:\\Program Files\\nodeApps\\service-management-api\\server\\server.js'
});
 
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
  svc.start();
});
 
svc.install();

我们还创建了一个单独的“卸载”模块,除了“ svc.on”函数作为其第一个参数“卸载”而不是“安装”之外,它完全相同。

希望这对某人在相同情况下的生活有帮助。