it-swarm.com.ru

"неожиданный импорт токенов" в Nodejs5 и babel?

В js-файле я использовал import вместо require

import co from 'co';

И попытался запустить его напрямую с помощью nodejs, так как он сказал, что импорт - это "функции доставки" и поддержка без какого-либо флага времени выполнения ( https://nodejs.org/en/docs/es6/ ), но я получил ошибка

import co from 'co';
^^^^^^

SyntaxError: Unexpected token import

Тогда я попытался использовать Babel

npm install -g babel-core
npm install -g babel-cli
npm install babel-core //install to babel locally, is it necessary?

и запустить

babel-node js.js

все еще появляется та же ошибка, неожиданный импорт токена?

Как я мог избавиться от этого?

191
jovi

От Babel 6 Примечания к выпуску:

Поскольку Babel стремится быть платформой для инструментов JavaScript, а не транспортера ES2015, мы решили включить все плагины. Это означает, что при установке Babel он больше не будет переносить код ES2015 по умолчанию.

В моей настройке я установил пресет es2015

npm install --save-dev babel-preset-es2015

или с пряжей

yarn add babel-preset-es2015 --dev

и включил пресет в моем .babelrc

{
  "presets": ["es2015"]
}
197
Laurence Bortfeld

Пока не реализованы модули, вы можете использовать "транспайлер" Babel для запуска вашего кода:

npm install --save babel-cli babel-preset-node6

а потом

./node_modules/babel-cli/bin/babel-node.js --presets node6 ./your_script.js

Если вы не хотите вводить --presets node6, вы можете сохранить его .babelrc файл следующим образом:

{
  "presets": [
    "node6"
  ]
}

Смотрите https://www.npmjs.com/package/babel-preset-node6 и https://babeljs.io/docs/usage/cli/

51
vincent mathew
  1. Установить пакеты: babel-core, babel-polyfill, babel-preset-es2015
  2. Создайте .babelrc с содержимым: { "presets": ["es2015"] }
  3. Не помещайте оператор import в ваш основной файл записи, используйте другой файл, например: app.js, и ваш основной файл записи должен требовать babel-core/register и babel-polyfill, чтобы сначала сделать babel работающим отдельно, прежде всего. Тогда вы можете потребовать app.js, где import оператор.

Пример:

index.js

require('babel-core/register');
require('babel-polyfill');
require('./app');

app.js

import co from 'co';

Он должен работать с node index.js.

26
Adiono

babel-preset-es2015 устарел, и вы получите предупреждение, если попытаетесь использовать решение Лоуренса.

Чтобы это работало с Babel 6.24.1+, используйте вместо него babel-preset-env:

npm install babel-preset-env --save-dev

Затем добавьте env к вашим предустановкам в вашем .babelrc:

{
  "presets": ["env"]
}

Смотрите Babel Docs для получения дополнительной информации.

14
kristina

Текущий метод заключается в использовании:

npm install --save-dev babel-cli babel-preset-env

И затем в .babelrc

{
    "presets": ["env"]
}

эта установка Поддержка Babel для последней версии JS (ES2015 и выше) Проверьте Babeljs

Не забудьте добавить babel-node в ваши скрипты внутри package.json использовать при запуске вашего файла js следующим образом.

"scripts": {
   "test": "mocha",
    //Add this line to your scripts
   "populate": "node_modules/babel-cli/bin/babel-node.js" 
},

Теперь вы можете npm populate yourfile.js внутри терминала.

Если вы работаете в Windows и выполняете внутреннюю или внешнюю команду, в которой ошибка не распознана, используйте узел перед сценарием, как показано ниже.

node node_modules/babel-cli/bin/babel-node.js

Тогда npm run populate

5
Isaac Sekamatte

если вы используете предустановку для Reaction-native, он принимает импорт

npm i babel-preset-react-native --save-dev

и поместите его в ваш файл .babelrc

{
  "presets": ["react-native"]
}

в корневой директории вашего проекта

https://www.npmjs.com/package/babel-preset-react-native

5
jde-chil

Возможно, вы запускаете нескомпилированные файлы. Давайте начнем с чистого листа!

В вашей рабочей директории создайте:

  • Две папки. Один для предварительно скомпилированного кода es2015. Другой для вывода Бабель. Мы назовем их "src" и "lib" соответственно.
  • Файл package.json со следующим объектом:

    { 
      "scripts": {
          "transpile-es2015": "babel src -d lib"
      },
      "devDependencies": {
          "babel-cli": "^6.18.0",
          "babel-preset-latest": "^6.16.0"
      }
    }
    
  • Файл с именем ".babelrc" со следующими инструкциями: {"presets": ["latest"]}

  • Наконец, напишите тестовый код в вашем файле src/index.js. В вашем случае: import co from 'co'.

Через вашу консоль:

  • Установите ваши пакеты: npm install
  • Перенесите ваш исходный каталог в ваш выходной каталог с помощью флага -d (aka --out-dir), как уже указано в нашем package.json: npm run transpile-es2015
  • Запустите ваш код из выходного каталога! node lib/index.js
5
MarbinJavier
  • установить -> "npm i --save-dev babel-cli babel-preset-es2015 babel-preset-stage-0"

далее в файл package.json добавить в скриптах "start": "babel-node server.js"

    {
  "name": "node",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "dependencies": {
    "body-parser": "^1.18.2",
    "express": "^4.16.2",
    "lodash": "^4.17.4",
    "mongoose": "^5.0.1"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "babel-node server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

и создайте файл для babel, в корне ".babelrc"

    {
    "presets":[
        "es2015",
        "stage-0"
    ]
}

и запустить npm start в терминале

2
lior ben yosef

Вы должны использовать babel-preset-env и nodemon для горячей перезагрузить.

Затем создайте файл .babelrc со следующим содержанием:

{
  "presets": ["env"]
}

Наконец, создайте скрипт в package.json:

"scripts": {
    "babel-node": "babel-node --presets=env",
    "start": "nodemon --exec npm run babel-node -- ./index.js",
    "build": "babel src -d dist"
  }

Или просто используйте этот шаблон:

Boilerplate: node-es6

2
Priyanshu Chauhan

Для решения проблемы выполните следующие действия:

1) Установите CLI и env preset

$ npm install --save-dev babel-cli babel-preset-env

2) Создайте файл . Babelrc

{
  "presets": ["env"]
}

3) настроить запуск npm в package.json

"scripts": {
    "start": "babel-node ./server/app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  }

4) затем запустите приложение

$ npm start
1
KARTHIKEYAN.A

@jovi все, что вам нужно сделать, это добавить файл .babelrc следующим образом:

{
  "plugins": [
    "transform-strict-mode",
    "transform-es2015-modules-commonjs",
    "transform-es2015-spread",
    "transform-es2015-destructuring",
    "transform-es2015-parameters"
  ]
}

и установите эти плагины как зависимости от npm.

затем попробуйте babel-node ***. js снова. надеюсь, это поможет вам.

1
高建德

Я сделал следующее, чтобы преодолеть проблему (скрипт ex.js)

проблема

$ cat ex.js
import { Stack } from 'es-collections';
console.log("Successfully Imported");

$ node ex.js
/Users/nsaboo/ex.js:1
(function (exports, require, module, __filename, __dirname) { import { Stack } from 'es-collections';
                                                              ^^^^^^

SyntaxError: Unexpected token import
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:152:10)
    at Module._compile (module.js:624:28)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)
    at tryModuleLoad (module.js:513:12)
    at Function.Module._load (module.js:505:3)
    at Function.Module.runMain (module.js:701:10)
    at startup (bootstrap_node.js:194:16)
    at bootstrap_node.js:618:3

решение

# npm package installation
npm install --save-dev babel-preset-env babel-cli es-collections

# .babelrc setup
$ cat .babelrc
{
  "presets": [
    ["env", {
      "targets": {
        "node": "current"
      }
    }]
  ]
}

# execution with node
$ npx babel ex.js --out-file ex-new.js
$ node ex-new.js
Successfully Imported

# or execution with babel-node
$ babel-node ex.js
Successfully Imported
0
nsaboo