Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > laporan ralat nodejs mkdir

laporan ralat nodejs mkdir

PHPz
Lepaskan: 2023-05-11 12:59:08
asal
1296 orang telah melayarinya

Baru-baru ini, semasa menggunakan Node.js, saya menghadapi masalah ralat mkdir. Apabila saya cuba menggunakan kaedah fs.mkdir() untuk mencipta direktori baharu, sistem melemparkan mesej ralat berikut:

Error: ENOENT: no such file or directory, mkdir 'path/to/new/directory'
Salin selepas log masuk

Perkara pertama yang saya fikirkan ialah masalah laluan, jadi saya menyemak sama ada laluan betul. Ternyata laluan itu betul, yang membuatkan saya sedikit keliru.

Saya melihat ke sana ke mari melalui kod dan akhirnya menemui masalahnya. Malah, gesaan mesej ralat ini sudah sangat jelas-tiada fail atau direktori sedemikian. Iaitu, ralat ini bukan disebabkan oleh laluan yang salah, tetapi oleh fail atau folder yang tidak wujud.

Masalahnya ialah saya tidak mencipta direktori unggul dalam laluan sebelum menggunakan kaedah mkdir untuk mencipta direktori. Dalam kes ini, kaedah fs.mkdir() hanya mencipta direktori peringkat terakhir dalam laluan, bukan direktori perantaraan.

Contohnya, sebelum mencipta direktori laluan/ke/baru/direktori, direktori laluan/ke/ mesti dibuat dahulu, jika tidak ralat ENOENT akan terhasil.

Untuk menyelesaikan masalah ini, kita hanya perlu menggunakan kaedah fs.mkdirSync() untuk mencipta direktori perantaraan secara rekursif sebelum menggunakan kaedah mkdir. Berikut ialah kod contoh yang dilaksanakan:

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);
Salin selepas log masuk

Kaedah mkdirSyncR() dalam kod contoh ini boleh mencipta direktori secara rekursif dan menentukan sama ada direktori itu wujud semasa mencipta direktori. Sebelum menggunakan kaedah mkdir() untuk mencipta direktori, kami mula-mula menggunakan bahagian laluan tidak termasuk direktori peringkat terakhir (iaitu, memanggil kaedah path.dirname()) untuk mencipta direktori perantaraan.

Kini, kami berjaya mencipta direktori baharu.

Ringkasan

Apabila menggunakan kaedah mkdir dalam Node.js, jika direktori perantaraan direktori tidak wujud, ralat ENOENT akan berlaku. Untuk menyelesaikan masalah ini, mula-mula kita boleh menggunakan kaedah fs.mkdirSync() untuk mencipta direktori perantaraan secara rekursif dan kemudian menggunakan kaedah fs.mkdir() untuk mencipta direktori baharu.

Atas ialah kandungan terperinci laporan ralat nodejs mkdir. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan