Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何通知Windows服务已启动?_Node.js_Windows Services - Fatal编程技术网

Node.js 如何通知Windows服务已启动?

Node.js 如何通知Windows服务已启动?,node.js,windows-services,Node.js,Windows Services,我正在运行一个nodejs HTTP服务器,它被打包为带有pkg npm模块的exe二进制文件。我需要将其作为windows服务运行。正常启动时工作正常。但如果我将其作为windows服务运行,会发生以下情况: 我开始服务 Windows尝试启动该服务 在此期间,HTTP服务器是可访问的,并且工作正常 Windows服务在30秒后超时并显示错误:“服务未及时响应启动或控制请求。” 在我看来,不知何故,我不得不通知windows我的服务已经启动,让我保持开放 我该怎么做?常规应用程序不能作为W

我正在运行一个nodejs HTTP服务器,它被打包为带有pkg npm模块的exe二进制文件。我需要将其作为windows服务运行。正常启动时工作正常。但如果我将其作为windows服务运行,会发生以下情况:

  • 我开始服务
  • Windows尝试启动该服务
  • 在此期间,HTTP服务器是可访问的,并且工作正常
  • Windows服务在30秒后超时并显示错误:“服务未及时响应启动或控制请求。”
在我看来,不知何故,我不得不通知windows我的服务已经启动,让我保持开放


我该怎么做?

常规应用程序不能作为Windows服务工作。因此,实施要满足一定的要求,

服务程序必须包括的服务控制管理器(SCM)的接口要求:

服务入口点

服务主要功能

服务控制处理程序函数

有一个包允许安装启动Node.js脚本的服务。默认情况下,当前脚本被视为入口点:

const osService = require('os-service');

const [action] = process.argv.slice(2);

function errorHandler(err) {
  if (!err) return;
  console.error(err);
  process.exit(1);
}

if (action === '--install') {
  osService.add('Foo', errorHandler);
} else if (action === '--uninstall') {
  osService.remove('Foo', errorHandler);
} else {
  // report service as running
  osService.run('Foo', () => {
    osService.stop();
  });

  // app entry point
}