Чтобы ответить на ваш первоначальный вопрос, вам нужно иметь расширение файла для файлов, равное .mjs
, чтобы вы могли определить в ваших package.json
сценариях:
"start": "node --experimental-modules myES6Module.mjs"
Вторая часть об удалении флага --experimental-modules
, как вы заметили, только что вышла из содержимого файла при использовании babel
. Чтобы обойти это, вы можете использовать babel-node
, но обратите внимание на его предупреждение об использовании в производстве. В этом предупреждении вы найдете ссылку на Пример узла сервера с Babel , демонстрирующий работающее решение.
Чтобы получить результаты, которые вы получите после того, как я создал минимальное рабочее решение со следующим, которое работает для меня:
npm i babel-cli babel-preset-es2015
Обновите package.json
до:
"start": "babel-node --presets es2015 myES6Module.js"
И рабочий .js
файл с использованием export
:
const showCar = () => {
//...code
}
const drive = () => {
//...code
console.log('driving')
};
drive();
export { drive, showCar }
Babel 7
Если вы хотите использовать версию 7, попробуйте ниже.
npm i @babel/cli @babel/core @babel/node @babel/preset-env
, поэтому ваш package.json
имеет следующие зависимости:
"@babel/cli": "^7.0.0-beta.51",
"@babel/core": "^7.0.0-beta.51",
"@babel/node": "^7.0.0-beta.51",
"@babel/preset-env": "^7.0.0-beta.51"
Установите скрипт запуска на
"start": "babel-node myES6Module.js"
Создайте файл .babelrc
на корневом уровне вашего проекта с помощью
{
"presets": ["@babel/preset-env"]
}
Теперь вы можете выполнить npm run start
с терминала, и вы должны увидеть вывод driving
, зарегистрированный на терминале на основе моего примера кода.
Я не использовал версию 7 раньше, и в документах говорится, что файл .babelrc
должен использовать "presets": ["env"]
, но я получил ошибку, однако выше и "presets": ["@babel/env"]
работали одинаково. Кто-то другой может знать причину этой ошибки, с которой я столкнулся, но это для другого вопроса.