Подтвердить что ты не робот

Получение неожиданного экспорта токена

Я пытаюсь запустить некоторый код ES6 в моем проекте, но я получаю непредвиденную ошибку экспорта токена.

export class MyClass {
  constructor() {
    console.log("es6");
  }
}
4b9b3361

Ответ 1

Вы используете синтаксис модуля ES6.

Это означает, что ваша среда (например, node.js) должна поддерживать синтаксис модуля ES6.

NodeJS использует синтаксис модуля CommonJS (module.exports), а не синтаксис модуля ES6 (ключевое слово export).

Решение:

  • Используйте пакет babel npm, чтобы перенести ES6 к цели commonjs

или же

  • Рефакторинг с синтаксисом CommonJS.

Ответ 2

В случае, если вы получите эту ошибку, это также может быть связано с тем, как вы включили файл javascript на свою HTML-страницу. При загрузке модулей вы должны явно объявить эти файлы как таковые. Вот пример:

//module.js:
function foo(){
   return "foo";
}

var bar = "bar";

export { foo, bar };

Когда вы включаете скрипт следующим образом:

<script src="module.js"></script>

Вы получите ошибку:

Uncaught SyntaxError: Неожиданный экспорт токена

Вам необходимо включить файл с атрибутом типа, установленным на "модуль":

<script type="module" src="module.js"></script>

И тогда он будет работать как положено, и вы готовы импортировать свой модуль в другой модуль:

import { foo, bar } from  "./module.js";

console.log( foo() );
console.log( bar );

Ответ 3

Для использования ES6 добавьте babel-preset-env

и в вашем .babelrc:

{
  "presets": ["@babel/preset-env"]
}

Ответ обновлен благодаря комментарию @ghanbari для применения babel 7.

Ответ 4

Установите пакеты babel @babel/core и @babel/preset которые преобразуют ES6 в цель commonjs, поскольку узел js не понимает цели ES6 напрямую.

npm install --save-dev @babel/core @babel/preset-env

Затем вам нужно создать один файл конфигурации с именем .babelrc в корневой директории вашего проекта и добавить туда этот код

{ "presets": ["@babel/preset-env"] }

Ответ 5

В данный момент нет необходимости использовать Babel (JS стал очень мощным), когда вы можете просто использовать экспорт модуля JavaScript по умолчанию. Ознакомьтесь с полным руководством

Message.js

module.exports = 'Hello world';

app.js

var msg = require('./Messages.js');

console.log(msg); // Hello World

Ответ 6

Использование синтаксиса ES6 не работает в узле, к сожалению, вам необходимо иметь babel, чтобы компилятор понимал синтаксис, такой как экспорт или импорт.

npm install babel-cli --save

Теперь нам нужно создать файл .babelrc, в файле babelrc, хорошо настроить babel для использования предустановки es2015, которую мы установили в качестве предустановки при компиляции в ES5.

В корне нашего приложения хорошо создайте файл .babelrc. $ npm install babel-preset-es2015 --save

В корне нашего приложения хорошо создайте файл .babelrc.

{  "presets": ["es2015"] }

Надеюсь, что это работает... :)