10

在将Etherpad Lite站点上传到 Azure for Web 站点之前,我试图在我的计算机上启动并运行 IIS,但是当我尝试 ( http://pastebin.com/4rZWbqix ) 时出现此错误:

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

您收到此 HTTP 200 响应是因为 system.webServer/iisnode/@devErrorsEnabled 配置设置为“true”。

除了node.exe进程的stdout和stderr的日志,考虑使用debugging和ETW traces来进一步诊断问题。

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

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

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

您收到此 HTTP 200 响应是因为 system.webServer/iisnode/@devErrorsEnabled 配置设置为“true”。

除了node.exe进程的stdout和stderr的日志,考虑使用debugging和ETW traces来进一步诊断问题。

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

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

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

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

4

5 回答 5

9

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

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

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

于 2012-10-04T02:36:07.100 回答
0

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

于 2014-01-16T12:42:06.260 回答
0

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

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

于 2020-12-03T19:58:20.710 回答
0

案子

错误:EPERM,不允许操作 'C:\Users\Matthew'

发生此错误是因为用户IIS_IUSRS无权访问此文件夹C:\Users\Matthew

解析度

您可以将您的应用程序放在“公共文件夹”中,例如:“ C:\Test\[yourapplication] ”,并仅授予用户IIS_IUSRS对该文件夹的访问权限。

于 2021-08-26T11:24:26.923 回答
-3

我不推荐使用 Azure 来托管 Etherpad Lite,我们不会针对 Microsoft 的服务进行优化,这包括 Microsoft Windows。如果可以选择,请使用 linux 来托管您的节点实例,根据我的经验,您会更开心。

于 2012-10-04T02:18:37.180 回答