node.js Мне нужно создать новый JSON файл - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь создать новый файл JSON. Всякий раз, когда я пытаюсь использовать функцию writeFile, она просто говорит, что такой каталог не открыт. Это код, который я пробовал.

fs.writeFile('./UserData/' + msg.author + ".json", JSON.stringify({firstSplitContent: firstSplit,secondSplitContent: secondSplit,thirdSplitContent: thirdSplit,fourthSplitContent: fourthSplit,fifthSplitContent: fifthSplit},null,4), err => {
          if(err) throw err;
          console.log("File is created successfully.")
        });

Ошибка: ENOENT: нет такого файла или каталога, откройте './UserData/<@301910353967710208>.json'

*


помощь будет оценена. Да, я знаю, что windows не будет использовать эти специальные символы. Я переключил его на author.id, чтобы удалить.

Ответы [ 3 ]

2 голосов
/ 07 августа 2020

fs.writeFile не будет создавать каталоги, которые еще не существуют.

Я подозреваю, что каталог на вашем пути, UserData, не существует, поэтому вы получаете это ошибка.

В противном случае ваш путь может быть неправильным. Поскольку вы используете относительный путь, код будет искать папку UserData в рабочем каталоге , ie. где в настоящее время выполняется код.

Если путь правильный, попробуйте сначала создать его:

if(!fs.existsSync('./UserData') {
  fs.mkdirSync('./UserData')
}

Или вы можете использовать такой пакет, как fs-extra, который дает вам возможность создания любых папок по пути, которые еще не существуют.

Это, вероятно, самая важная функция для вас, если вы хотите использовать fs-extra: https://github.com/jprichardson/node-fs-extra/blob/master/docs/outputJson.md

1 голос
/ 07 августа 2020

Вы должны следовать ответу Виллиана, но я заметил одну вещь: вы пытаетесь использовать msg.author в имени файла, но это объект (действительно большой объект), вы можете подумать об изменении его на message.author.id

0 голосов
/ 07 августа 2020

Вы не можете использовать < или > в имени папки, что и пытается сделать бот. Вместо этого вы можете использовать msg.author.id, чтобы получить идентификатор без <@>

...