Я пытаюсь запустить код ES6 в своем проекте, но получаю неожиданную ошибку экспорта токена.
export class MyClass {
constructor() {
console.log("es6");
}
}
javascript
ecmascript-6
webpack
babel
Джейсон
источник
источник
export
это доступно только в ES6, и именно эти модули обеспечивают поддержку ES6.module.exports = MyClass
, а неexport class MyClass
Ответы:
Вы используете синтаксис модуля ES6.
Это означает, что ваша среда (например, node.js) должна поддерживать синтаксис модуля ES6.
NodeJS использует синтаксис модуля CommonJS (
module.exports
), а не синтаксис модуля ES6 (export
ключевое слово).Решение:
babel
пакет npm, чтобы перенести ES6 кcommonjs
целиили
Примеры синтаксиса CommonJS (от flaviocopes.com/commonjs/ ):
exports.uppercase = str => str.toUpperCase()
exports.a = 1
источник
import
изначально? Я думал, что v10.0.0 будет, но, видимо, нет.В случае, если вы получите эту ошибку, это также может быть связано с тем, как вы включили файл javascript на свою HTML-страницу. При загрузке модулей вы должны явно объявить эти файлы как таковые. Вот пример:
Когда вы включаете скрипт следующим образом:
Вы получите ошибку:
Вам необходимо включить файл с атрибутом type, установленным в «module»:
И тогда он будет работать как положено, и вы готовы импортировать свой модуль в другой модуль:
источник
type
как ожидается, будет допустимый тип MIME (он же медиа-тип), так что это была неожиданная находка. Спасибо!<script type="module">import ...</script>
, когда вы импортируете из модуля. Я проверил это в последней версии Chromium.Мои два цента
экспорт
ES6
CommonJS Альтернатива
Экспорт по умолчанию
ES6
CommonJS Альтернатива
Надеюсь это поможет
источник
Чтобы использовать ES6 добавить
babel-preset-env
и в вашем
.babelrc
:Ответ обновлен благодаря комментарию @ghanbari, чтобы применить babel 7.
источник
babel
автором. Хотя ответ Фила Рикетта проясняет проблему, и это хорошо, этот ответ является прямым решением проблемы автора.В этот момент нет необходимости использовать Babel (JS стал очень мощным), когда вы можете просто использовать экспорт модуля JavaScript по умолчанию. Проверьте полный учебник
Message.js
app.js
источник
Установите пакеты Бабеля
@babel/core
и@babel/preset
который преобразует ES6 в CommonJS цели , как узел JS не понимает цели ES6 напрямуюnpm install --save-dev @babel/core @babel/preset-env
Затем вам нужно создать один файл конфигурации с именем
.babelrc
в корневом каталоге вашего проекта и добавить этот код туда{ "presets": ["@babel/preset-env"] }
источник
Я исправил это, сделав файл точки входа как.
и любой файл, который я импортировал внутри
app.js
и за пределами, работал сimports/exports
теперь вы просто запустите его, какnode index.js
Примечание: если
app.js
используетсяexport default
, это делаетсяrequire('./app.js').default
при использовании файла точки входа.источник
Использование синтаксиса ES6 не работает в узле, к сожалению, вам нужно иметь babel, чтобы компилятор понимал синтаксис, такой как экспорт или импорт.
Теперь нам нужно создать файл .babelrc. В файле babelrc мы настроим babel на использование предустановки es2015, которую мы установили в качестве предустановки при компиляции в ES5.
В корне нашего приложения мы создадим файл .babelrc. $ npm установить babel-preset-es2015 --save
В корне нашего приложения мы создадим файл .babelrc.
Надеюсь, что это работает ... :)
источник