javascript - Error de sintaxis al usar try/catch con aync/await en NodeJS

CorePress2024-01-25  253

Cerrado. Esta pregunta no es reproducible o fue causada por errores tipográficos. Actualmente no acepta respuestas.

Esta pregunta fue causada por un error tipográfico o un problema que ya no se puede reproducir. Si bien aquí pueden haber preguntas similares sobre el tema, esta se resolvió de una manera que probablemente no ayude a futuros lectores.

Cerrado

hace 2 años

.

mejorar esta pregunta

Soy principiante en Node Js. No puedo entender por qué el siguiente código da un error de sintaxis con catch(). He actualizado Node JS V14. Cualquier ayuda será apreciada aquí

async function demoPromise() {
    try {
        let message1 = await myFirstPromise;
        let message2 = await helloPromise();
        console.log(message2);
    } catch ((error) => {
        console.log("Error:" + error.message);
    })
}

(async () => {
    await demoPromise();
})();

Error:

nodejs\mark\asyncAwait.js:7
    } catch ((error) => {
             ^

SyntaxError: Unexpected token '('
    at wrapSafe (internal/modules/cjs/loader.js:979:16)
    at Module._compile (internal/modules/cjs/loader.js:1027:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47

2

Es un error de sintaxis porque simplemente esa no es la sintaxis parar detectando un error. Has iniciado una función de flecha por algún motivo; ¿Estás confundiendo esto con el método .catch en un objeto de promesa?

- jonrsharpe

28/03/2021 a las 17:29

1

quitar la flecha y el cierre ): } catch (error) { ... }

- Yousaf

28/03/2021 a las 17:29

Gracias @jonrsharpe por tu rápida respuesta a esto. Sí, exactamente, me confundí con la captura de promesa versus la captura de prueba con async/await. ya funciona

- marca

28/03/2021 a las 17:31



------------------------------------

catch no espera una función, es solo una sintaxis especial para detectar el error:

try {
  
} catch(error) {

}

0



------------------------------------

El verificador de sintaxis de node ya le indica dónde encontró un problema de sintaxis.

Busque el signo de zanahoria ("^") en el resultado proporcionado. Muestra exactamente cuándo se detuvo el proceso. Estaba buscando cualquier cosa excepto un paréntesis abierto y encontró uno, por lo que arrojó el error.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare