Tips On Solving The Error “await is only valid in async function” in Nodejs

Error: await is only valid in async function. This error is usually thrown by Nodejs developers while using async. If you are also facing the same problem, then you’re lucky, as this post might help! Scroll down to discover.

How To Solve The Error “await is only valid in async function” in Nodejs?

We have a file called commonFun.js in which we have written the code below:

var myfunction = async function(x,y) {
   ....
   return [variableA, variableB]
}
exports.myfunction = myfunction;

We then attempted to utilize it in a different file.

var helper = require('./commonFun.js');   
 var start = function(a,b){
     ....
     const result = await helper.myfunction('test','test');
 }
 exports.start = start;
However, we am encountering the following issue.
"await is only valid in async function"

This is how to resolve the issue “await is only valid in async functions” in nodejs. The problem above does not pertain to myfunction, but to start. Here, we wait for myfunction to complete before returning a promise that will also be waited for. It is pointless to wait for myfunction to complete before returning; instead, we can just return a guaranteed solution later. Also, we don’t utilize the async keyword on the function since we can just return the promise delivered by myfunction.

Solution 1

The problem above does not relate to myfunction, but to start. Therefore, we wait for myfunction to complete before returning a promise that will also be waited for. It is pointless to wait for myfunction to complete before returning; instead, we can just return a promise solved later. Also, we don’t utilize the async keyword on the function since we can just return the promise delivered by myfunction.

async function myfunction() {
  console.log('Inside of myfunction');
}
 
  function start() {
  return myfunction();
}
 
// Call start
  (async() => {
  console.log('before start');
 
  await start();
  
  console.log('after start');
})();

Solution 2

This error message was caused by the map function not being designated as “async.” We solved this problem by removing the “await” call from the map function and devising another method of obtaining the intended behavior.

var myfunction = async function(x,y) {
   ....
   someArray.map(someVariable => { // <- This was the function giving the error
        return await someFunction(someVariable);
    });
}

Conclusion

We hope you found our blog post on how to resolve the issue  “await is only valid in async function” in Nodejs helpful. Please leave a comment if you have any other questions or concerns regarding this matter. Thank you for reading; we are always delighted anytime one of our pieces may give valuable information on this topic!


Related articles

Scroll to Top