Node.js - Синтаксична помилка: Unexpected token import

Я не розумію, що не так. Node v5.6.0 NPM v3.10.6

Код:

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

Помилка:

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
Рішення

Оновлення 3: Починаючи з Вузла 13, ви можете використовувати або розширення .mjs, або встановити "тип": "модуль" у вашому package.json. Вам не потрібно використовувати прапор --experimental-modules.

Оновлення 2: Починаючи з Node 12, ви можете використовувати або розширення .mjs, або встановити "type": "module" у вашому package.json. При цьому потрібно запускати ноду з прапором --experimental-modules.

Оновлення: У Node 9 він включений за прапором, і використовує розширення .mjs.

node --experimental-modules my-app.mjs

Хоча import дійсно є частиною ES6, він, на жаль, ще не підтримується в NodeJS за замовчуванням, і лише нещодавно отримав підтримку в браузерах.

Дивіться таблицю сумісності браузерів на MDN та цей випуск Node.

З статті Джеймса М Снелла Оновлення модулів ES6 в Node.js (лютий 2017):

"Робота ведеться, але це займе деякий час - в даний час ми розраховуємо приблизно на рік, як мінімум.

До тих пір, поки підтримка не з'явиться нативно, вам доведеться продовжувати використовувати класичні оператори require:

const express = require("express");

Якщо ви дійсно хочете використовувати нові можливості ES6/7 в NodeJS, ви можете скомпілювати його за допомогою Babel. Ось приклад сервера.

Коментарі (11)

На жаль, Node.js поки що не підтримує "імпорт" ES6.

Для виконання того, що ви намагаєтесь зробити (імпортувати модуль Express), цього коду повинно бути достатньо

var express = require("express");

Крім того, переконайтеся, що у вас встановлений Express, виконавши

$ npm install express

Дивіться Node.js Docs для отримання додаткової інформації про вивчення Node.js.

Коментарі (5)

Error: SyntaxError: Неочікувана лексема import або SyntaxError: Неочікувана лексема export


Рішення: Змініть весь свій імпорт, як приклад

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

А також змініть ваш export default = foo; на module.exports = foo;.

Коментарі (2)