50

Node.jsでchmodを使用するにはどうすればよいですか?

パッケージfsにはこれを行うメソッドがありますが、2番目の引数として何が必要かわかりません。

fs.chmod(パス、モード、[コールバック])

非同期chmod(2)。可能性のある例外以外の引数は、完了コールバックに与えられません。

fs.chmodSync(パス、モード)

同期chmod(2)。

Node.jsのドキュメントから)

私が何かをするなら

fs.chmodSync('test', 0755);

何も起こりません(ファイルはそのモードに変更されません)。

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

どちらも機能しません。

私はWindowsマシンで作業しています。

4

2 に答える 2

61

508行目のソースコードによると/lib/fs.js

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

8進数または文字列のいずれかを取ります。

例えば

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

ファイルモードは*nixマシンにのみ存在するため、この場合は機能しません。

于 2012-01-06T11:03:31.243 に答える
17

8進数を指定する正しい方法は次のとおりです。

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

こちらのファイルモードを参照してください。

于 2019-03-14T03:21:11.973 に答える