Node.js - Error de sintaxis: importación de token inesperada
No entiendo qué está mal. Nodo v5.6.0 NPM v3.10.6
El código:
function (exports, require, module, __filename, __dirname) {
import express from 'express'
};
El error:
SyntaxError: Unexpected token import
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:387:25)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:140:18)
at node.js:1001:3
Nodo 13+ Desde el Nodo 13 , puede usar la .mjs
extensión o configurarla {"type": "module"}
en su paquete.json. No es necesario utilizar la --experimental-modules
bandera. Los módulos ahora están marcados como estables en node.js
Nodo 12 Desde el Nodo 12 , puede usar la .mjs
extensión o configurarla "type": "module"
en su paquete.json. Y necesitas ejecutar el nodo con la --experimental-modules
bandera.
Nodo 9 En el Nodo 9 , está habilitado detrás de una bandera y usa la .mjs
extensión.
node --experimental-modules my-app.mjs
Si bien import
es parte de ES6, desafortunadamente aún no es compatible con NodeJS de forma predeterminada y solo recientemente ha conseguido soporte en los navegadores.
Consulte la tabla de compatibilidad del navegador en MDN y este problema de Nodo .
De la actualización de James M Snell sobre módulos ES6 en Node.js (febrero de 2017):
El trabajo está en progreso, pero llevará algún tiempo; actualmente estamos considerando al menos alrededor de un año.
Hasta que el soporte aparezca de forma nativa ( ahora marcado como estable en el Nodo 13+ ), tendrás que continuar usando clásicas :require
declaraciones
const express = require("express");
Si realmente desea utilizar las nuevas funciones de ES6/7 en NodeJS, puede compilarlo usando Babel. A continuación se muestra un servidor de ejemplo .
Desafortunadamente, Node.js aún no es compatible con ES6 import
.
Para lograr lo que está intentando hacer (importar el módulo Express), este código debería ser suficiente
var express = require("express");
Además, asegúrese de tener Express instalado ejecutando
$ npm install express
Consulte los documentos de Node.js para obtener más información sobre cómo aprender Node.js.
Me sorprende esm
que no lo hayan mencionado. Este pequeño pero potente paquete le permite utilizar import
o require
.
Instala esm en tu proyecto
$ npm install --save esm
Actualice su secuencia de comandos de inicio de nodo para usar esm
node -r esm app.js
esm
simplemente funciona. Perdí MUCHO tiempo .mjs
y --experimental-modules
solo descubrí que un .mjs
archivo no puede importar un archivo que use require
o module.exports
. Esto fue un gran problema, mientras que esm
te permite mezclar y combinar y simplemente lo resuelve... esm
simplemente funciona.