Node ошибка: SyntaxError: неожиданный импорт маркера
Я не понимаю, что не так. Я щекотал другой форум, рассказывающий о транспиляции и бабье. Что мне нужно сделать?
Благодарю.
Node -v: v5.5.0
мой код:
import recast from 'recastai'
и ошибка
(function (exports, require, module, __filename, __dirname) { import recast from 'module1'
^^^^^^
SyntaxError: Unexpected token import
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:387:25)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:139:18)
at node.js:999:3
Ответы
Ответ 1
Импорт ES6 - это недавно введенная функция, а текущая стабильная версия Node пока не поддерживает их. Node.js issue tracker имеет открытую проблему для этого - но до тех пор, пока V8 и Node не добавят поддержку этой функции, вам нужно будет использовать транспилер (большинство популярный babel), чтобы использовать импорт.
Для быстрой проверки трансляции, Babel предоставляет веб-REPL. Этот демонстрирует, что ваш код транслируется.
Домашняя страница веб-сайта babel указывает на соответствующие ресурсы для начала работы с Babel и интеграции с вашим рабочим процессом разработки.
Для простейшей настройки перейдите на эту страницу и выберите CLI в разделе встроенных модулей Babel.
В основном это три простых шага:
- Установить babel-cli:
npm install --save-dev babel-cli
- Создайте конфигурационный файл
.babelrc
: echo '{ "presets": ["es2015"] }' > .babelrc
- Используйте установленный модуль для перевода исходного кода:
./node_modules/.bin/babel src -d lib
На вышеупомянутой странице настройки также показано, как добавить npm script, чтобы упростить последний шаг. Кроме того, вы можете интегрировать babel с вашим редактором или цепочкой сборки, чтобы ваши файлы автоматически составлялись при изменении.
Ответ 2
Использовать последние пресеты babel
-
Установите последние пресеты
yarn add --dev babel-preset-latest
-
Создайте .babelrc
и добавьте следующее
{
"presets": ["latest"]
}
-
Запустите script
npx babel-node yourscript.js
-
Или в файле package.json добавьте
"scripts": {
"start": "babel-node index.js"
}
Ответ 3
Благодаря предложение NodeJS об улучшении у нас есть путь вперед. Вы можете использовать @standard-things/esm
Найдите объявление здесь Просто запустите
npm i --save @std/esm
В вашем пакете сегодня.
Ответ 4
Если вы не хотите иметь дело с babel. Это работало для меня.
const calc = require('./my_calc');
let {add, multiply} = calc;