NodeJS中的EPERM错误用于窗口共享文件夹

时间:2015-05-07 18:10:05

标签: node.js

我正在尝试将本地文件复制到共享文件夹,但显示的是EPERM错误。这是我的代码:

var fs = require('fs');
var is = fs.createReadStream(SOURCE_FILE);
var os = fs.createWriteStream(TARGET_FILE);

is.pipe(os);
is.on('end', function() {
    console.log('success');
});

...这是错误消息: 应用程序抛出了未捕获的异常并被终止: 错误:EPERM,打开' TARGET_FILE'

TARGET_FILE包含一个Windows共享文件夹,其中包含所有用户的所有权限

提前致谢

1 个答案:

答案 0 :(得分:0)

如果您在IIS 7/8上运行IISNODE,它可以在一个特殊类型的用户上运行,该用户不会继承"所有用户"权限。

如果从命令提示符运行iisnode,它可能以您登录的用户身份运行。如果您在服务包装器中运行它,它可能也在一个"用户"不继承"所有用户"允许。您可以加载任务管理器(右键单击任务栏)以查看正在运行该进程的用户。

如果您在IIS中使用IISNODE,则node.js使用与您在其下运行的域相同的用户。通常是DefaultAppPool。

授予DefaultAppPool权限:

  1. 右键单击文件夹

  2. 选择属性

  3. 选择安全标签
  4. 点击编辑按钮
  5. 点击添加按钮
  6. 在框中输入 IIS AppPool \ DefaultAppPool (包括空格)
  7. 点击支票名称按钮
  8. 现在应该显示DefaultAppPool带下划线,单击OK
  9. 从用户列表中选择DefaultAppPool并为其分配所需的最低权限 - 抵制给予DefaultAppPool过多权利的诱惑。