Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

387
Vistas
'await Unexpected identifier' on Node.js 7.5

I am experimenting with the await keyword in Node.js. I have this test script:

"use strict";
function x() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({a:42});
    },100);
  });
}
await x();

But when I run it in node I get

await x();
      ^
SyntaxError: Unexpected identifier

whether I run it with node or node --harmony-async-await or in the Node.js 'repl' on my Mac with Node.js 7.5 or Node.js 8 (nightly build).

Oddly, the same code works in the Runkit JavaScript notebook environment: https://runkit.com/glynnbird/58a2eb23aad2bb0014ea614b

What am I doing wrong?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Thanks to the other commenters and some other research await can only be used in an async function e.g.

async function x() {
  var obj = await new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({a:42});
    },100);
  });
  return obj;
}

I could then use this function as a Promise e.g.

x().then(console.log)

or in another async function.

Confusingly, the Node.js repl doesn't allow you to do

await x();

where as the RunKit notebook environment does.

over 4 years ago · Santiago Trujillo Denunciar

0

As others have said, you can't call 'await' outside of an async function. However, to get around this you can wrap the await x(); in an async function call. I.e.,

function x() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({a:42});
    },100);
  });
}
//Shorter Version of x():
var x = () => new Promise((res,rej)=>setTimeout(() => res({a:42}),100));

(async ()=>{
    try{
      var result = await x();
      console.log(result);
    }catch(e){
      console.log(e)
    }
})();

This should work in Node 7.5 or above. Also works in chrome canary snippets area.

over 4 years ago · Santiago Trujillo Denunciar

0

so as suggested by others await will work inside async. So you can use the below code to avoid using then:

async function callX() {
    let x_value = await x();
    console.log(x_value);
}

callX();
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda