Как я могу разделить мой код и сохранить все это асинхронным? - PullRequest
0 голосов
/ 31 октября 2019

Я немного кодирую как побочный проект, собирая воедино биты, которые написали другие люди (это для простого бота разногласий). Я хочу разделить свой код, чтобы было легче решать проблемы и читать, однако всякий раз, когда я пытаюсь использовать код, появляется сообщение об ошибке «SyntaxError: await действителен только в асинхронной функции».

IЯ пытался предположительно загрузить код асинхронно, загрузить его с помощью require (), а затем сделать одну команду асинхронной, делая весь код в файле асинхронным (это не просто одна команда, которую я хочу загрузить, а целый файл. Также я ')я не уверен, правильно ли я это сделал или нет), используя npm async-require и, возможно, некоторые другие, которые были в интернете.

//one of the solutions I've tried. This is just copy pasted from the 
//answer

//file2.js
var fs = require('fs');
module.exports = function (callback) {
   fs.readFile('/etc/passwd', function (err, data) {
    callback(err, data);
  });
};

//file1.js
require('./passwords')(function (err, passwords) {
  // This code runs once the passwords have been loaded.
});

В первом файле перед тем, как я его разделил, язапустил его с client.on('message', async message => {, и это позволило мне использовать функцию await в каждой команде. Я все еще хочу сделать это, но просто сделайте его немного аккуратнее и проще, разделив его.

Я пытаюсь сделать это, чтобы перейти к другому вопросу, который я задал. и поставьте галочку на одном из ответов. Любая помощь будет принята с благодарностью <3 </p>

1 Ответ

0 голосов
/ 31 октября 2019

Исправьте эти ожидания так, чтобы они не были внутри асинхронных функций. Это лексическая проблема, которую можно решить, просто посмотрев на место, где произошла ошибка. Просто найдите ближайшую функцию, в которой находится ожидание, и отметьте ее как асинхронную. Повторяйте, пока ошибка не исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...