Попытка записи файла не дает такой ошибки файла или каталога

Я создаю папку, если ее не существует, и пишу файл внутри нее. Но следующий код дает мне

let fs = require('fs');
let mkdirp = require('mkdirp');
let path = require('path');

const server = http.createServer((req, res) => {
    if (req.method === 'POST') {

    ................

    var dir = '/home/malintha/test';

    mkdirp(dir, function(err) {

        // path exists unless there was an error

    });

    fs.writeFile("/home/malintha/test/malintha.txt", data, function(err) {
        if(err) {
            return console.log(err);
        }

        console.log("The file was saved!");
    });
  }
.................

Дает мне

{ Error: ENOENT: no such file or directory, open '/home/malintha/test/malintha.txt'
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/home/malintha/test/malintha.txt' }

В чем причина этой проблемы?

node.js,

-1

Ответов: 1


1 принят

mkdirpасинхронный; вы можете использоватьmkdirp.sync , записать файл в обратном вызове или обещать вещи. Пример на странице GH модуля также показывает это:

mkdirp('/tmp/foo/bar/baz', function (err) {
    if (err) console.error(err)
    else console.log('pow!') // <=- Your stuff goes here.
});

См. Раздел else? Это означает, что он был создан. Вероятно, вы пишете до того, как он будет создан.

Node.js,
Похожие вопросы