5

Получение ошибки "Неожиданный токен Export"

19

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

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

Как можно решить эту проблему?

5 ответ(ов)

4

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

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

var bar = "bar";

export { foo, bar };

Когда вы подключаете скрипт так:

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

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

Uncaught SyntaxError: Unexpected token export

Для корректной работы вам нужно подключить файл с атрибутом type, установленным на "module":

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

После этого должно работать согласно ожиданиям, и вы сможете импортировать ваш модуль в другом модуле:

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

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

Таким образом, убедитесь, что вы используете type="module" при подключении модулей.

1

Вот мой вклад по вашему вопросу.

Экспорт

ES6

myClass.js

export class MyClass1 {
}
export class MyClass2 {
}

other.js

import { MyClass1, MyClass2 } from './myClass';

Альтернатива для CommonJS

myClass.js

class MyClass1 {
}
class MyClass2 {
}
module.exports = { MyClass1, MyClass2 }
// или
// exports = { MyClass1, MyClass2 };

other.js

const { MyClass1, MyClass2 } = require('./myClass');

Экспорт по умолчанию

ES6

myClass.js

export default class MyClass {
}

other.js

import MyClass from './myClass';

Альтернатива для CommonJS

myClass.js

module.exports = class MyClass1 {
}

other.js

const MyClass = require('./myClass');

Если у вас есть дополнительные вопросы или нужна помощь, не стесняйтесь спрашивать!

0

Я решил эту проблему, создав файл точки входа, как показано ниже:

// index.js
require = require('esm')(module)
module.exports = require('./app.js')

Теперь любые файлы, которые я импортировал внутри app.js и далее, работают с import/export. Запускать это можно через node index.js.

Примечание: если app.js использует export default, тогда при использовании файла точки входа это будет выглядеть как require('./app.js').default.

0

Чтобы использовать ES6, добавьте babel-preset-env, а в вашем файле .babelrc укажите следующее:

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

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

0

Для установки пакетов Babel @babel/core и @babel/preset-env, которые позволяют конвертировать код ES6 в формат CommonJS, выполните следующую команду, так как Node.js не может напрямую исполнять код в формате ES6:

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

Затем необходимо создать конфигурационный файл с именем .babelrc в корневом каталоге вашего проекта и добавить в него следующий код:

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

Таким образом, вы сможете успешно использовать ES6-код в вашем проекте на Node.js.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь