如何在Node.js中使用chmod

pvo*_*orb 40 chmod fs node.js

如何在Node.js中使用chmod?

包中有一个方法fs,应该这样做,但我不知道第二个参数需要什么.

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

异步chmod(2).除了可能的异常之外,没有给完成回调的参数.

fs.chmodSync(路径,模式)

同步chmod(2).

(来自Node.js文档)

如果我做的事情

fs.chmodSync('test', 0755);
Run Code Online (Sandbox Code Playgroud)

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

fs.chmodSync('test', '+x');
Run Code Online (Sandbox Code Playgroud)

也不起作用.

我正在研究一台Windows机器.

qia*_*iao 53

根据/lib/fs.js508号线的源代码

fs.chmodSync = function(path, mode) {
  return binding.chmod(pathModule._makeLong(path), modeNum(mode));
};
Run Code Online (Sandbox Code Playgroud)

和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;
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

例如

fs.chmodSync('test', 0755);
fs.chmodSync('test', '755');
Run Code Online (Sandbox Code Playgroud)

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


小智 13

指定 Octal 的正确方法如下:

fs.chmodSync('test', 0o755); 
Run Code Online (Sandbox Code Playgroud)

请参阅此处的文件模式。