UnhandledPromiseRejectionWarning: Ошибка: ENOENT: такого файла или каталога нет, stat '/assets/level.png' - PullRequest
0 голосов
/ 16 января 2019

Так что в настоящее время я работаю над проектом в приложении, которое вы можете знать - Discord. В настоящее время я пытаюсь закодировать бота и пришел к тому, чтобы заставить его отправлять изображения из локального файла. Мой бот размещен на Heroku, что означает, что все файлы являются локальными по отношению к облаку, в котором он находится, и каждый загружаемый файл сохраняется в иерархии, в которой он находится при нажатии. Более того, я загрузил все файлы, которые мне нужны, и весь код работает и обновляется, за исключением одной мелочи. Файл, который я хочу отправить.

module.exports.run = async(bot, message, args) => {
    message.channel.send('', {files: ['../assets/level.png']});
};

Эти строки кода должны отправлять изображение простого файла с серым прямоугольником (png). Однако .. это не так. Вместо этого моя консоль возвращает эти строки:

2019-01-16T19:58:24.366174+00:00 app[worker.1]: (node:4) 
UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, stat '/assets/level.png'
2019-01-16T19:58:24.366478+00:00 app[worker.1]: (node:4) 
UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated 
either by throwing inside of an async function without a catch block, or by rejecting a 
promise which was not handled with .catch(). (rejection id: 1)

Любые предложения о том, какое исправление может быть, было бы замечательно. Кроме того, если вы хотите связаться со мной по поводу того, как выглядят мои текущие файлы, пожалуйста, не стесняйтесь обращаться ко мне по Discord @ I'mALittleTeapot # 0001. Спасибо.

1 Ответ

0 голосов
/ 16 января 2019

в соответствии с документами discord.js (https://discord.js.org/#/docs/main/stable/class/DMChannel?scrollTo=send) (проверил textchannel channel.send () и он выглядит так же)

вот как вы вызываете эту функцию:

// Send a local file
channel.send({
  files: [{
    attachment: 'entire/path/to/file.jpg',
    name: 'file.jpg'
  }]
})
  .then(console.log)
  .catch(console.error);

похоже, вам нужно указать путь для вложения и имя для него (ну, имя не обязательно)

не уверен в этом, но если channel.send действительно поддерживает синтаксис, который вы использовали, то Я бы посмотрел на весь "путь / путь / до / файл.jpg", который настоятельно рекомендует вам не использовать относительные пути .

...