如何在 Node.js 中使用 chmod

发布于 2024-12-25 09:19:44 字数 611 浏览 2 评论 0原文

如何将 chmod 与 Node.js 一起使用?

fs 中有一个方法,应该可以做到这一点,但我不知道它的第二个参数是什么。

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

异步 ​​chmod(2)。除了可能的异常之外,不会向完成回调提供任何参数。

fs.chmodSync(路径、模式)

同步 chmod(2)。

(来自 Node.js 文档

如果我做了什么

fs.chmodSync('test', 0755);

都没有发生的事情(文件是没有更改为该模式)。

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

也不行。

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

How do I use chmod with Node.js?

There is a method in the package fs, which should do this, but I don't know what it takes as the second argument.

fs.chmod(path, mode, [callback])

Asynchronous chmod(2). No arguments other than a possible exception are given to the completion callback.

fs.chmodSync(path, mode)

Synchronous chmod(2).

(from the Node.js documentation)

If I do something like

fs.chmodSync('test', 0755);

nothing happens (the file isn't changed to that mode).

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

doesn't work either.

I'm working on a Windows machine btw.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦太阳 2025-01-01 09:19:44

根据其源代码 /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 机器上。

According to its sourcecode /lib/fs.js on line 508:

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

and line 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;
      }
  }
}

it takes either an octal number or a string.

e.g.

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

It doesn't work in your case because the file modes only exist on *nix machines.

只为守护你 2025-01-01 09:19:44

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

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

请参阅此处的文件模式。

The correct way to specify Octal is as follows:

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

Refer to the file modes here.

独夜无伴 2025-01-01 09:19:44

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

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

您可以在此处找到 fs.constants 的值:节点文件系统常量

On Windows, instead of on Octal number or string, you need to use fs.constants or fsPromises.constants. For example, to change a file to open for read only access you would use:

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

You can find the values for fs.constants here: Node File System Constants

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文