如何在 Node.js 中使用 chmod

问题描述 投票:0回答:3

如何在 Node.js 中使用 chmod?

包中有一个方法

fs
,应该这样做,但我不知道第二个参数是什么。

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

异步 chmod(2)。除了可能的异常之外,没有其他参数被提供给完成回调。

fs.chmodSync(路径,模式)

同步 chmod(2).

(来自 Node.js 文档

如果我做类似的事情

fs.chmodSync('test', 0755);

什么都没有发生(文件没有更改为该模式)。

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

也不行。

顺便说一句,我正在 Windows 机器上工作。

node.js chmod fs
3个回答
68
投票

根据其源代码

/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 机器上。


22
投票

Octal的正确指定方式如下:

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

参考文件模式here.


0
投票

在 Windows 上,您需要使用

fs.constants
fsPromises.constants
而不是八进制数字或字符串。例如,要将文件更改为以只读方式打开,您可以使用:

fs.chmodSync(filePath, fs.constants.O_RDONLY)

您可以在此处找到

fs.constants
的值:节点文件系统常量

© www.soinside.com 2019 - 2024. All rights reserved.