как решить ошибку: await допустимо только в асинхронной функции?

#javascript #async-await

#javascript #async-await

Вопрос:

Я создаю приложение в node.js , я хочу вызвать асинхронную функцию в users.js файл, который определен внутри middleware/index.js файл , я определил функцию в index.js и обернул его в объект (по какой-то причине) и экспортировал этот объект:

определение функции в middleware/index.js:

 middlewareObj.getPostsHomePage = async function(obj){
  await getPostsHomePageTrending(obj, getPostsHomePagePopular);

  console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
  console.log(obj)
  return obj;
  
}
module.exports = middlewareObj; 
  

users.js :

 const middlewareObj = require("../middleware/index.js");
await  middlewareObj.getPostsHomePage(obj);
  

при запуске кода я получаю сообщение об ошибке:

 await getPostsHomePage(obj);
  ^^^^^

SyntaxError: await is only valid in async function
  

В чем причина этой ошибки и как я могу ее решить?

Комментарии:

1. В users.js вы используете await, не находясь в асинхронной функции.

2. если это в модуле nodejs, вы можете использовать await верхнего уровня, но он должен быть модулем (т. Е. Использовать импорт / экспорт, а не module.exports / require)

Ответ №1:

await ключевое слово может использоваться только внутри async функции:

 async function() {
   await getPostsHomePage(obj);
}
  

Вы также можете использовать обещания, если вам не нужно использовать async функцию:

 getPostsHomePage(obj).then(result => {
   console.log(result); // Do your stuff here later
})