Skip to main content

Unexpected reserved word 'await' error in JavaScript

The “unexpected reserved word await” error is a common problem that can occur when using the ‘await’ keyword in JavaScript.

This error occurs when the ‘await’ keyword is used inside of a function that is not marked as ‘async’. In this post, we’ll take a look at two examples of how this error can occur and how to fix it.

Example 1: Using await inside a function that is not marked as async

One of the most common causes of the “unexpected reserved word await” error is trying to use the ‘await’ keyword inside a function that is not marked as ‘async’. Here’s an example of how this error can occur:

function getString() { //not marked async  // error: unexpected reserved word 'await'  const str = await Promise.resolve('hello');  return str;}

In this example, we are trying to use the ‘await’ keyword inside the ‘getString’ function to wait for a promise to resolve. However, since the ‘getString’ function is not marked as ‘async’, we are not allowed to use the ‘await’ keyword inside it.

To fix this error, we simply need to mark the function as async:

async function getString() {  const str = await Promise.resolve('hello');  return str;}

By marking the function as ‘async’, we are telling the JavaScript runtime that we will be using the ‘await’ keyword inside the function and that it should wait for the promise to resolve before executing the rest of the code.

Example 2: Using await inside a callback function

Another common cause of the “unexpected reserved word await” error is forgetting to set an inner function as ‘async’, such as the ones we pass to methods like forEach(), map(), etc.

[Fixed]: Cannot find module ‘react’ Error in TypeScript

In this example, we’ve marked the ‘loopThrough’ function as ‘async’, but we’re using the await keyword inside of the function we passed to the ‘forEach’ method:

async function loopThrough() {  ['a', 'b', 'c'].forEach(str => {    // unexpected reserved word 'await'    await Promise.resolve(str);  });}

In this case, the forEach method is expecting a callback function that does not return a value (i.e., a “void” function).

However, we are trying to use the ‘await’ keyword inside the callback function, which means that the callback function will return a promise. This is not allowed and will result in the “unexpected reserved word await” error.

To fix this error, we simply need to mark the callback function as async:

function loopThrough() {  ['a', 'b', 'c'].forEach(async str => {    await Promise.resolve(str);  });}

By marking the callback function as async, we are telling the JavaScript runtime that it is allowed to use the ‘await’ keyword inside the callback function.

This allows us to write asynchronous code that waits for promises to resolve within the callback function, while still respecting the “void” function signature expected by the ‘forEach’ method.

Using top-level await in a browser or Node.js environment

If you’re trying to use the ‘await’ keyword at the top level (i.e., outside of any function), you’ll need to set the type attribute to the module in your package.json file if you’re using Node.js or set the attribute in a script tag in the browser.

Using top-level await in a browser environment

To use top-level await in a browser environment, set the type attribute to the module in your script tag:

<script type="module" src="index.js"></script>

Now you can use top-level await in your code, like this:

console.log(await Promise.resolve(10));

Using top-level await in a Node.js environment

To use top-level await in a Node.js environment, follow these steps:

  1. Create a package.json file if you don’t have one already:
npm init -y

Add the type property and set it to the module in your package.json file:

{  "type": "module",  "name": "javascript",  "version": "1.0.0",  "description": "",  "main": "index.js",  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1"  },  "keywords": [],  "author": "",  "license": "ISC"}

Now you can use top-level await in your Node.js code.

Conclusion

The “unexpected reserved word await” error occurs when the await keyword is used inside of a function that was not marked as async.

To use the await keyword inside of a function, mark the directly containing function as async by adding the async keyword before the function definition.

Comments

Popular posts from this blog

Best Health Insurance For Students in USA

Whether you're a domestic or international student studying in the USA, having health insurance coverage is not just a luxury, it's a necessity. With the high cost of healthcare in the USA, having the best health insurance for students in the USA can provide you with peace of mind while you focus on your studies. Understanding the Need for Health Insurance for Students Being a student, the likelihood of you being healthy and not needing frequent medical attention is quite high. But life is unpredictable, and emergencies can arise at any time. If a sudden injury or illness strikes, the resulting healthcare costs can become a major financial burden if you are uninsured. With the steep price of medical care in the United States, even a simple trip to the emergency room can lead to exorbitant bills. By having a good health insurance plan, students can mitigate these financial risks. Such plans cover a wide array of medical services, ranging from regular preventive care to prolonge...

Top 10 Web Hosting Companies in 2024

 As the world of internet grows, the need for high-quality, reliable web hosting has never been more important. In this blog post, we'll delve into the top 10 web hosting companies in 2024, examining their features, pricing, and how they stack up against each other. Exploring The Importance of Reliable Web Hosting The lifeblood of the digital universe is web hosting. It's the sturdy anchor keeping every website afloat in the sea of the internet. Reliable web hosting is your ally in carving out your own piece of the online world, ensuring your site remains accessible, loading with speed, and guarding your precious data securely. It's like owning prime real estate in the metropolis of the internet, where your digital presence is steadfast, standing tall among the rest. This, in a nutshell, is the essential role of a trustworthy web hosting service. It's not just about the space; it's about the quality, reliability, and safety of that space. The Rise of Green Hostin...

Export 'Switch' (imported as 'Switch') was not found in 'react-router-dom'

Are you encountering the error “attempted import error: ‘switch’ is not exported from ‘react-router-dom'” or variations like “export switch was not found in react-router-dom” or “switch is not exported from react-router”? If so, you’re not alone—this is a common problem that many React developers face when using the ‘react-router-dom’ library. In this blog post, we’ll explore the causes of this error and provide a few solutions to help you fix it and get your ‘React application up and running. What Causes the “Export ‘Switch’ (imported as ‘Switch’) was not found in ‘react-router-dom'” Error? This error occurs when a developer tries to import the ‘Switch’ component from the ‘react-router-dom’ library, but the component is not actually exported by the library. For example, the following code will trigger the error: import { Switch } from 're...