it-swarm.com.ru

Ошибка импорта Babel ES6, SyntaxError: Неожиданный импорт токена

Я пытаюсь настроить базовую модульную программу, но у меня возникают проблемы с импортом модулей. Я пытаюсь импортировать свой пользовательский модуль, я получаю следующую ошибку:

(function (exports, require, module, __filename, __dirname) { import testStep from 'testStep';
                                                          ^^^^^^
SyntaxError: Unexpected token import

Код, который вызывает проблему:

testcase.js

import testStep from 'testStep';

testStep.hello();

testStep.js

var testStep = {
  hello: hello,
};

var hello = () => {
  console.log('hello world');
};

export default {testStep};

package.json

{
  "name": "rebuild-poc",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-polyfill": "^6.23.0",
    "babel-preset-env": "^1.6.0"
  },
  "dependencies": {}
}

.babelrc 

{
  "presets": [
    "env"
  ]
}

Я уже пробовал несколько других исправлений, таких как установка testStep в качестве класса, а также использование require('./testStep.js'), однако ни одна из них, похоже, не сработала. 

У меня что-то неправильно настроено с babel или в одном из моих файлов?

*** Правка: я запускаю testCase.js с node testCase.js.

5
Graeham B

Пожалуйста, установите babel-cli и назовите свой файл с: ./node_modules/.bin/babel-node testcase.js

Это не удастся. Теперь мы должны исправить ваш код.

testStep.js должен выглядеть так:

var hello = () => {
  console.log('hello world');
};

var testStep = {
  hello: hello,
};

export default testStep;

Тогда это будет работать. ;)

Это первое введение в https://babeljs.io/ , что вы должны установить babel-cli и babel-preset-env. ;)

Вы также можете написать свой testStep.js следующим образом:

var testStep = {
  hello: hello,
};

function hello () {
  console.log('hello world');
};

export default testStep;

Это помнит подъем. Как Джейкоб сказал в своем первом пункте.

5
danbruegge

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

Плагин пресетов

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

сохраните его .babelrc файл

{
  presets: ["env"]
}

Примечание. https://babeljs.io/docs/en/babel-preset-env#docsNav

2
Jijo Paulose
  1. Вам нужно определить hello с function, используя var, у вас не будет function hoisting, поэтому при объявлении testStephello не определено. 

  2. Если вы хотите использовать модуль es, вы можете использовать babel-register или babel-node. В вашем коде узел не может обрабатывать модуль es.

Бабель-регистр

С bebel-register все ваши модули будут обрабатываться babel при их импорте.

Сначала yarn add babel-register babel-cli --dev или npm install babel-register babel-cli -dev Затем создайте файл записи:

// entry.js
require('babel-register')
require('testcase')

В вашем тестовом примере вы можете использовать модуль ES сейчас.

Отредактируйте ваш package.json: 

"scripts": {
    "test": "node entry.js"
},

вы можете запустить yarn test или npm run test в терминале.

Вам не нужен babel-polyfill, то есть для браузеров, а не для узла.

0
Jacob