Node.js – SyntaxError: importazione token imprevista

Non capisco cosa c’è che non va. Nodo v5.6.0 NPM v3.10.6

Il mio codice:

(function (exports, require, module, __filename, __dirname) { import express from 'express'; 

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 

Aggiornamento: nel Nodo 9 , è abilitato dietro un flag e utilizza l’estensione .mjs .

 node --experimental-modules my-app.mjs 

Sebbene l’ import sia effettivamente parte di ES6, sfortunatamente non è ancora supportata in NodeJS per impostazione predefinita e solo recentemente ha ottenuto il supporto nei browser.

Vedi la tabella del browser compatibile su MDN e questo problema di nodo .

Dall’aggiornamento di James M Snell sui moduli ES6 in Node.js (febbraio 2017):

I lavori sono in corso ma ci vorrà del tempo – Al momento stiamo valutando circa un anno.

Fino a quando il supporto non si presenterà in modo nativo, dovrai continuare a utilizzare le istruzioni require standard:

 const express = require("express"); 

Se vuoi davvero utilizzare le nuove funzionalità di ES6 / 7 in NodeJS, puoi compilare usando Babel. Ecco un esempio di server .

Sfortunatamente, Node.js non supporta ancora l’ import di ES6.

Per realizzare ciò che stai cercando di fare (importare il modulo Express), questo codice dovrebbe essere sufficiente

 var express = require("express"); 

Inoltre, assicurati di aver installato Express eseguendo

 $ npm install express 

Vedere i documenti Node.js per ulteriori informazioni sull’apprendimento di Node.js.

Errore: SyntaxError: importazione di token imprevisto o SyntaxError: esportazione di token inaspettati


Soluzione: cambia tutte le tue importazioni come esempio

 const express = require('express'); const webpack = require('webpack'); const path = require('path'); const config = require('../webpack.config.dev'); const open = require('open'); 

se puoi usare ‘babel’, prova ad aggiungere script di compilazione in package.json (- preset = es2015) come sotto. fa precompilare il codice di importazione in es2015

 "build": "babel server --out-dir build --presets=es2015 && webpack"