Неожиданный экспорт токенов: использование поддержки модуля ES6
Обнаружение ошибки «Неожиданный экспорт токенов» при попытке запустить код ES6 может вызвать недоумение проблема. Эта ошибка возникает, когда среда выполнения не поддерживает используемый вами синтаксис модуля EcmaScript (ESM).
Понимание ESM:
ESM, часто называемый " ES6 Modules» представила систему модулей для JavaScript, обеспечивающую инкапсуляцию кода и упрощающую управление зависимостями. Он использует ключевое слово экспорта для определения модулей, что делает организацию кода более явной.
Поддержка ESM:
Версии NodeJS ниже v14.13.0 не поддерживали ESM и вместо этого использовали в модулях CommonJS, в которых использовался синтаксис свойства Module.exports. Однако более новые версии NodeJS (v14.13.0 и выше) поддерживают ESM при условии, что он явно включен.
Решения:
Включите ESM в NodeJS (v14) .13.0 ):
Отредактируйте файл package.json вашего проекта и установите для свойства "type" значение "module":
{ ... "type": "module", ... }
Рефакторинг с использованием синтаксиса модуля CommonJS:
Для более старых версий NodeJS выполните рефакторинг кода, чтобы использовать синтаксис модуля CommonJS:
// Example ES6 module export class MyClass { constructor() { console.log("es6"); } } // CommonJS module equivalent module.exports = class MyClass { constructor() { console.log("commonJs"); } };
Используйте TypeScript и ts-node:
Рассмотрите возможность использования TypeScript вместе с пакетами npm ts-node или ts-node-dev. TypeScript транспилируется в JavaScript во время компиляции, что делает код ES6 совместимым со старыми версиями NodeJS.
Транспилируйте ESM в CommonJS:
Используйте esbuild (устанавливаемый через npm) для транспиляции вашего кода ES6 JavaScript в формат CommonJS, что позволяет запускать его в средах без встроенной поддержки ESM.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3