rapport d'erreur nodejs mkdir

PHPz
Libérer: 2023-05-11 12:59:08
original
1258 Les gens l'ont consulté

Récemment, lors de l'utilisation de Node.js, j'ai rencontré un problème d'erreur mkdir. Lorsque j'ai essayé d'utiliser la méthode fs.mkdir() pour créer un nouveau répertoire, le système a généré le message d'erreur suivant :

Error: ENOENT: no such file or directory, mkdir 'path/to/new/directory'
Copier après la connexion

Ma première pensée a été le problème du chemin, j'ai donc vérifié si le chemin était correct. Il s’est avéré que le chemin était correct, ce qui m’a rendu un peu confus.

J'ai parcouru le code d'avant en arrière et j'ai finalement trouvé le problème. En fait, l'invite de ce message d'erreur est déjà très évidente : aucun fichier ou répertoire de ce type. Autrement dit, cette erreur n’est pas causée par un chemin incorrect, mais par le fichier ou le dossier qui n’existe pas.

Le problème est que je n'ai pas créé le répertoire supérieur dans le chemin avant d'utiliser la méthode mkdir pour créer le répertoire. Dans ce cas, la méthode fs.mkdir() crée uniquement le répertoire de dernier niveau du chemin, pas les répertoires intermédiaires.

Par exemple, avant de créer le répertoire chemin/vers/nouveau/répertoire, le répertoire chemin/vers/ doit d'abord être créé, sinon une erreur ENOENT se produira.

Pour résoudre ce problème, il suffit d'utiliser la méthode fs.mkdirSync() pour créer récursivement le répertoire intermédiaire avant d'utiliser la méthode mkdir. Voici un exemple de code implémenté :

const fs = require('fs');
const path = require('path');

function mkdirSyncR(targetDir) {
  const sep = path.sep;
  const initDir = path.isAbsolute(targetDir) ? sep : '';
  targetDir.split(sep).reduce((parentDir, childDir) => {
    const curDir = path.resolve(parentDir, childDir);
    try {
      if (!fs.existsSync(curDir)) {
        fs.mkdirSync(curDir);
      }
    } catch (err) {
      if (err.code !== 'EEXIST') {
        throw err;
      }
    }
    return curDir;
  }, initDir);
}

const newDir = 'path/to/new/directory';
mkdirSyncR(path.dirname(newDir));
fs.mkdirSync(newDir);
Copier après la connexion

La méthode mkdirSyncR() dans cet exemple de code peut créer de manière récursive un répertoire et déterminer si le répertoire existe lors de la création du répertoire. Avant d'utiliser la méthode mkdir() pour créer un répertoire, nous utilisons d'abord la partie du chemin excluant le répertoire de dernier niveau (c'est-à-dire en appelant la méthode path.dirname()) pour créer un répertoire intermédiaire.

Maintenant, nous pouvons créer un nouveau répertoire en douceur.

Résumé

Lors de l'utilisation de la méthode mkdir dans Node.js, si le répertoire intermédiaire du répertoire n'existe pas, une erreur ENOENT se produira. Pour résoudre ce problème, nous pouvons d'abord utiliser la méthode fs.mkdirSync() pour créer de manière récursive un répertoire intermédiaire, puis utiliser la méthode fs.mkdir() pour créer un nouveau répertoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal