web-dev-qa-db-fra.com

Comment utiliser chmod avec Node.js

Comment utiliser chmod avec Node.js?

Il y a une méthode dans le package fs, qui devrait le faire, mais je ne sais pas ce qu'elle prend comme deuxième argument.

fs.chmod (chemin, mode, [rappel])

Chmod asynchrone (2). Aucun argument autre qu'une exception possible n'est donné au rappel de fin.

fs.chmodSync (chemin, mode)

Chmod synchrone (2).

(à partir de la documentation Node.js )

Si je fais quelque chose comme

fs.chmodSync('test', 0755);

rien ne se passe (le fichier n'est pas modifié dans ce mode).

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

ne fonctionne pas non plus.

Je travaille sur une machine Windows btw.

39
pvorb

selon son code source /lib/fs.js à la ligne 508

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

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

il faut soit un nombre octal soit une chaîne

par exemple.

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

Cela ne fonctionne pas dans votre cas car les modes de fichier existent uniquement sur les machines * nix.

53
qiao

La manière correcte de spécifier Octal est la suivante:

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

Reportez-vous aux modes de fichier ici

https://nodejs.org/api/fs.html

3
nesty