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

В js файле я использовал импорт вместо 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

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

Как я могу избавиться от него?

Ответ 1

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

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

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

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

или с пряжей

yarn add babel-preset-es2015 --dev

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

{
  "presets": ["es2015"]
}

Ответ 2

Пока модули не реализованы, вы можете использовать "транспилер" 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/

Ответ 3

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

Пример:

index.js

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

app.js

import co from 'co';

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

Ответ 4

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

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

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

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

{
  "presets": ["env"]
}

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

Ответ 5

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

В рабочем каталоге создайте:

  • Две папки. Один для предварительно скомпилированного кода es2015. Другой для babel's вывод. Мы назовем их "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), который уже указан в нашем пакете .json: npm run transpile-es2015
  • Запустите свой код из выходного каталога! node lib/index.js

Ответ 6

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

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

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

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

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

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

Ответ 7

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

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

Ответ 8

  • установить → "npm я --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 в терминале

Ответ 9

Вы должны использовать 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: узел-es6

Ответ 10

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

1) Установите CLI и предустановку env

$ 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

Ответ 11

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

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

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

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

Ответ 12

Я сделал следующее, чтобы преодолеть проблему (скрипт 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

Ответ 13

В вашем приложении вы должны объявить свои модули require(), не используя ключевое слово "import":

const app = require("example_dependency");

Затем создайте файл .babelrc:

{
"presets": [ 
    ["es2015", { "modules": false }]
]
}

Затем в вашем gulpfile обязательно объявите свои модули require():

var gulp = require("gulp");