50

如何在 Node.js 中使用 chmod?

package 中有一个方法fs应该这样做,但我不知道它作为第二个参数需要什么。

fs.chmod(路径,模式,[回调])

异步 chmod(2)。除了可能的异常之外,没有为完成回调提供任何参数。

fs.chmodSync(路径,模式)

同步 chmod(2)。

(来自Node.js 文档

如果我做类似的事情

fs.chmodSync('test', 0755);

没有任何反应(文件未更改为该模式)。

fs.chmodSync('test', '+x');

也不行。

顺便说一句,我正在使用 Windows 机器。

4

2 回答 2

61

根据/lib/fs.js第 508 行的源代码:

fs.chmodSync = function(path, mode) {
  return binding.chmod(pathModule._makeLong(path), modeNum(mode));
};

和第 203 行:

function modeNum(m, def) {
  switch (typeof m) {
    case 'number': return m;
    case 'string': return parseInt(m, 8);
    default:
      if (def) {
        return modeNum(def);
      } else {
        return undefined;
      }
  }
}

它需要一个八进制数或一个字符串。

例如

fs.chmodSync('test', 0755);
fs.chmodSync('test', '755');

它不适用于您的情况,因为文件模式仅存在于 *nix 机器上。

于 2012-01-06T11:03:31.243 回答
17

指定八进制的正确方法如下:

fs.chmodSync('test', 0o755); 

请参阅此处的文件模式。

于 2019-03-14T03:21:11.973 回答