使用NSSM作为Windows服务启动NodeJs进程不起作用

我曾经看过无数关于如何使用NSSM( http://nssm.cc/ )来启动NodeJS进程的文章。

所以,我有以下简单的NodeJS文件:

var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('<p>Hello World</p>'); }).listen(8000); console.log('Server running on http://localhost:8000/'); 

我正在使用这个命令来安装NodeJS文件作为一个Windows服务:

“C:\ Program Files \ SimpleNode \ nssm.exe”安装SimpleNode“C:\ Program Files \ SimpleNode \ node.exe”“C:\ Program Files \ SimpleNode \ simple.js”

该服务已安装。 当我启动它时,我得到一个错误消息,服务处于暂停状态,并在事件查看器中看到以下错误:

GetProcessTimes()失败:句柄无效。

这应该很简单。 我曾尝试使用具有本地pipe理员权限的域帐户。 我已经尝试了几个不同的端口号。 当我从命令行启动它时,该应用程序确实工作正常。

更多注意事项:这是在64位Windows 2008 R2服务器上运行的。 我确定我正在运行NSSM和Node的所有64位可执行文件。 我也尝试使用32位可执行文件。

谁能告诉我我失踪了什么? 其他人可以复制这个问题吗?

发现问题。

问题是,simple.js文件的path中有一个空格(Good Old“Program Files”)。 你必须用NSSM的反斜线来正确解释引号。 正确的安装命令行是:

“C:\ Program Files \ SimpleNode \ nssm.exe”安装SimpleNode“C:\ Program Files \ SimpleNode \ node.exe”\“C:\ Program Files \ SimpleNode \ simple.js \”

这听起来像你没有进入港口的原因。 尝试将服务设置为以pipe理员身份运行(服务器pipe理器>服务> Windows Server 2008上的服务名称)并查看会发生什么情况。

NSSM通常与Node.js一起工作,所以这可能是一个权限问题。 查看本教程,展示如何使用我们的商业应用程序设置Node.js进行故障排除。 并且随时可以使用30天的试用版,因为它可能会返回更有用的错误消息,指出问题所在。