babel-node не распознает es2015?

Я пытаюсь запустить updateSchema.js комплекта реле-стартера с помощью babel-node. Кажется, что он не распознает функции стрелок:

> SyntaxError: .../build/updateSchema.js: Unexpected token (10:9)
   8 | 
   9 | // Save JSON of full schema introspection for Babel Relay Plugin to use
> 10 | async () => {
     |          ^

Я попытался добавить пресет "stage-0" в ".babelrc", который исправляет эту ошибку, но вместо этого я получаю:

SyntaxError: .../build/updateSchema.js: Unexpected token (23:1)
  21 |     );
  22 |   }
> 23 | }();
     |  ^

Это не признание es2015? Или это ошибка в моей схеме? Скрипт "updateSchema.js" взят из реле-стартер-комплект.

Все остальное работает нормально, и у «babel-node», похоже, нет проблем с остальной частью моего приложения, написанного на es2015.

EdIT: сейчас я попытался просто загрузить стартовый комплект реле и запустить «npm run update-schema», и он работает из коробки.


person Diogo Barroso    schedule 30.11.2015    source источник
comment
Я думаю, это потому, что он думает, что вы вызываете функцию, а не объявляете ее. Стрелочные функции анонимны, поэтому вам следует удалить asyncзатем, если вы хотите использовать функцию, вы должны заключить ее в другие скобки, например: (()=>{/*your code*/}());   -  person Ziki    schedule 30.11.2015


Ответы (2)


Требовали ли вы babel-core в точке входа?

Первый npm install --save-dev babel-core

затем откройте файл точки входа вашего приложения

а затем требуется babel-core по require("babel-core");

person Kichnipan    schedule 30.11.2015

Этот синтаксис работал на Babel 5, но он должен вызывать синтаксическую ошибку, потому что это нестандартный синтаксис вызова стрелочной функции: arrow обсуждение функций

Итак, исправление такое:

(async () => {
  var result = await (graphql(Schema, introspectionQuery));
  if (result.errors) {
    console.error('ERROR: ', JSON.stringify(result.errors, null, 2));
  } else {
    fs.writeFileSync(
      path.join(__dirname, '../data/schema.json'),
      JSON.stringify(result, null, 2)
    );
  }
})();
person Sibelius Seraphini    schedule 14.12.2015