我看过无数篇关于如何使用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\simple node\nssm.exe”install simplenode“c:\program files\simplenode\node.exe”“c:\program files\simplenode\simple.js”
服务已安装。当我启动它时,会收到一条错误消息,服务处于暂停状态,我在事件查看器中看到以下错误:
GetProcessTimes()失败:句柄无效。
这应该很简单。我尝试使用具有本地管理权限的域帐户。我尝试了几个不同的端口号。当我从命令行启动应用程序时,它工作正常。
更多说明:
这是在64位Windows 2008 R2服务器上运行的。我已经确保运行了NSSM和节点的所有64位可执行文件。我还尝试对两者都使用32位可执行文件。
有人能告诉我我遗漏了什么吗?其他人能复制这个问题吗?

最佳答案

找到了问题。
问题是,到simple.js文件的路径中有一个空间(好的旧“程序文件”)。您必须用反斜杠转义引号,以便NSSM正确地解释它。正确的安装命令行是:
“c:\program files\simple node\nssm.exe”install simplenode“c:\program files\simplenode\node.exe \“c:\program files\simplenode\simple.js \”

08-17 13:34