Node.js - SyntaxError: Importazione token inaspettata
Non capisco cosa c'è di sbagliato. Nodo v5.6.0 NPM v3.10.6
Il codice:
function (exports, require, module, __filename, __dirname) {
import express from 'express'
};
L'errore:
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
388
3
Aggiornamento 3: Da Node 13, puoi usare l'estensione .mjs, o impostare "type": "module" nel tuo package.json. Non è necessario usare il flag
--experimental-modules
.Aggiornamento 2: Da Node 12, puoi usare o l'estensione
.mjs
, o impostare"type": "module"
nel tuo package.json. E devi eseguire node con il flag--experimental-modules
.Aggiornamento: In Node 9, è abilitato dietro una bandiera, e usa l'estensione
.mjs
.Mentre
import
è effettivamente parte di ES6, sfortunatamente non è ancora supportato di default in NodeJS, e solo molto recentemente ha ottenuto il supporto nei browser.Vedi tabella di compatibilità dei browser su MDN e questo problema di Node.
Da James M Snell's Update on ES6 Modules in Node.js (febbraio 2017):
Il lavoro è in corso, ma ci vorrà un po' di tempo - Attualmente stiamo guardando a circa un anno almeno.
Fino a quando il supporto non apparirà nativamente, dovrai continuare ad usare le classiche dichiarazioni
require
:Se vuoi davvero usare le nuove funzionalità ES6/7 in NodeJS, puoi compilare usando Babel. Ecco un server di esempio.
Sfortunatamente, Node.js non supporta ancora ES6.
Per realizzare quello che stai cercando di fare (importare il modulo Express), questo codice dovrebbe essere sufficiente
Inoltre, assicurati di avere installato Express eseguendo
Vedi i Node.js Docs per maggiori informazioni su come imparare Node.js.
Errore: SyntaxError: Token inatteso import o SyntaxError: Token inatteso export
Soluzione: Cambia tutte le tue importazioni come esempio
E cambia anche il tuo
export default = foo;
inmodule.exports = foo;