javascript - 创建了一个 Windows 服务来运行我的 Node 应用程序,但服务在启动几秒钟后停止运行

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

已经有一个关于这个主题的线程 ( here ),但它没有回答我的情况(大多数答案都提出了 Node 窗口替代方案的建议,而不是解决它创建的服务停止运行的原因)。

如标题所示,我使用 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"- -file "D:\Program Files\path\to\my\application\index.js"--log "Node.js Service Management API wrapper"--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 Service Management API wrapper"--grow 0.25 --wait 1 --maxrestarts 3 - -中止错误

这是我对 node-windows 的实现:

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();

关于如何修复此服务以使其保持“开启”的任何建议?是我对 Node 窗口的实现吗?或者可能是某些 Windows Server 2012 配置问题?

谢谢!

最佳答案

这不是最令人满意的解决方案,但我们通过简单地删除整个 node-windows 应用程序并从头开始来解决它。现在可以了。我们还将它嵌套在我们使用此服务自动化的实际 Node 应用程序中,但我认为这与它现在可以工作的事实没有任何关系。这是最终状态的代码:

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”函数的第一个参数是“卸载”而不是“安装”之外,它完全相同。

希望这对发现自己处于相同情况的人有所帮助。

关于javascript - 创建了一个 Windows 服务来运行我的 Node 应用程序,但服务在启动几秒钟后停止运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044647/

相关文章:

javascript - 为什么返回default case而不是扔进Redux的reducer?

javascript - n = n +1 比 n++ 或++n 快,为什么?

javascript - 在收到来自单个 worker 的消息后向所有 worker 发送消息

javascript - Node.js - 来自函数的值返回未定义

node.js - NET Node.js错误: read ECONNRESET (on Windows)

c# - 通过 javascript 调用 C# windows 服务函数

c++ - 是否可以使用 cygwin 编译 Windows 服务?

javascript - JQuery timepicker 时隙未禁用

java - 将 Jenkins 配置为 Windows 服务 : JENKINS_HOME, 路径和文件结构

javascript - 如何创建一个可以在单项和批处理模式之间切换的 Rx (RxJS) 流?