错误:EPERM,Node.js和Etherpad Lite不允许的操作

我试图让我的计算机上运行IIS的Etherpad精简版网站,然后将其上传到Azure Web站点,但是当我尝试( http://pastebin.com/4rZWbqix )时出现此错误:

iisnode处理请求时遇到错误。 HRESULT:0x2 HTTP状态:500 HTTP原因:内部服务器错误

您正在接收此HTTP 200响应,因为system.webServer/iisnode/@devErrorsEnabledconfiguration设置为“true”。

除了node.exe进程的stdout和stderr的日志之外,还可以考虑使用debugging和ETW跟踪来进一步诊断问题。

node.exe进程生成的stdout和stderr输出的最后64k如下所示:fs.js:520 return

binding.lstat(pathModule._makeLong(path)); ^ Error: EPERM, operation not permitted 'C:\Users\Matthew' at Object.fs.lstatSync (fs.js:520:18) at Object.realpathSync (fs.js:1047:21) at tryFile (module.js:142:15) at Function.Module._findPath (module.js:181:18) at Function.Module._resolveFilename (module.js:336:25) at Function.Module._load (module.js:280:25) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:244:9) 

在Etherpad的目录中没有fs.js文件,所以我认为它是Node.js的一部分有问题。 我是新的Node.js,所以任何帮助,将不胜感激。

编辑1:我目前正在寻找Azure的替代品,并授予C:\ Users \ Matthew的权限。 但是,有可能以某种方式修改fs.js,把一个try / catch围绕binding.lstat?

编辑2:玩了一下之后(添加权限工作!),我已经得到它的工作。 但现在加载127.0.0.1:81返回:

iisnode处理请求时遇到错误。 HRESULT:0x2 HTTP状态:500 HTTP原因:内部服务器错误

您正在接收此HTTP 200响应,因为system.webServer/iisnode/@devErrorsEnabledconfiguration设置为“true”。

除了node.exe进程的stdout和stderr的日志之外,还可以考虑使用debugging和ETW跟踪来进一步诊断问题。

下面显示了node.exe进程生成的stdout和stderr输出的最后64k:

[x1B] [33m [2012-10-03 20:28:13.587] [警告]控制台 – [x1B] [39m没有find设置文件。 继续使用默认值!

[xlB] [32m [2012-10-03 20:28:14.338] [信息]控制台 – [x1B] [39mInstalled插件:

看起来这不是一个错误,因为输出的是预期的,但似乎停在plugins.formatPlugins()。

确保与运行node.js应用程序的IIS应用程序池关联的用户身份对部署应用程序的位置具有相应的文件系统权限(在这种情况下,看起来像c:\users\matthew )。

如果您在默认应用程序池中运行您的应用程序,并使用默认的IIS用户,则应该能够通过以下方式授予必要的权限:

%systemdrive%\ windows \ system32 \ icacls.exe c:\ users \ matthew / grant IIS_IUSRS:(OI)(CI)F

这是关于文件夹“C:\ Users \ Matthew”的权限。 取得所有权并给予修改权限。

我不会推荐Azure托pipeEtherpad Lite,我们不会为Microsoft的服务进行优化,这包括Microsoft Windows。 如果这是一个选项,请使用Linux来托pipe您的节点实例,您将会对我的经验感到高兴。