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

时间:2012-10-03 23:50:41

标签: node.js azure etherpad iisnode

我尝试在我的计算机上安装Etherpad Lite站点并运行IIS,然后再将其上传到Azure for Web Sites,但是当我尝试(http://pastebin.com/4rZWbqix)时出现此错误:

  

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

     

您收到此HTTP 200响应是因为   system.webServer/iisnode/@devErrorsEnabled配置设置为   '真正的'。

     

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

     

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

      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.lstat周围放置一个try / catch吗?

编辑2:稍微玩了一下(添加了权限!),我已经开始工作了。但现在加载127.0.0.1:81会返回:

  

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

     

您收到此HTTP 200响应是因为   system.webServer/iisnode/@devErrorsEnabled配置设置为   '真正的'。

     

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

     

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

     

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

     

[x1B] [32m [2012-10-03 20:28:14.338] [INFO] console - [x1B] [39mInstalled   插件:

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

4 个答案:

答案 0 :(得分:8)

确保与运行node.js应用程序的IIS应用程序池关联的用户标识对部署应用程序的位置具有适当的文件系统权限(在本例中看起来像c:\users\matthew)。

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

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

答案 1 :(得分:0)

关于文件夹'C:\ Users \ Matthew'的许可。取得所有权并授予修改权限。

答案 2 :(得分:0)

我遇到了同样的问题,当我尝试通过以下方式使用最新的节点版本时 nvm use [some node version 10.12.0 in my case]输出成功,但是当我运行node -v时,它告诉我实际上我在8的节点上。

我通过以第二个Windows用户身份登录(尽管他们同时在C:/上安装了管理员和节点)来解决该问题,在那里我使用nvm use 10.12.0来替换节点版本,当我以当前用户重新登录时,工作。

答案 3 :(得分:-3)

我不建议使用Azure来托管Etherpad Lite,我们不会针对Microsoft的服务进行优化,这包括Microsoft Windows。如果它是一个选项,请使用linux来托管您的节点实例,您的体验会更加愉快。