babel-node tidak mengenali es2015?

Saya mencoba menjalankan relay-starter-kit updateSchema.js dengan babel-node. Tampaknya ia tidak mengenali fungsi panah:

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

Saya sudah mencoba menambahkan preset "stage-0" ke ".babelrc" yang memperbaiki kesalahan itu tetapi saya malah mendapatkan:

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

Apakah ini tidak mengenali es2015? Atau apakah ini kesalahan dalam skema saya? Skrip "updateSchema.js" berasal dari relay-starter-kit.

Segala sesuatu yang lain berjalan dengan baik dan "babel-node" sepertinya tidak memiliki masalah dengan aplikasi saya lainnya yang ditulis di es2015.

Sunting: Sekarang saya sudah mencoba mengunduh relay-starter-kit dan menjalankan "npm run update-schema" dan langsung berfungsi.


person Diogo Barroso    schedule 30.11.2015    source sumber
comment
Saya pikir itu karena ia mengira Anda memanggil fungsi alih-alih mendeklarasikannya. Fungsi panah bersifat anonim, jadi Anda harus menghapus asynclalu jika Anda ingin menghidupkan fungsi tersebut, Anda harus membungkusnya dengan tanda kurung lain seperti: (()=>{/*your code*/}());   -  person Ziki    schedule 30.11.2015


Jawaban (2)


Apakah Anda memerlukan babel-core di titik masuk?

Pertama npm install --save-dev babel-core

lalu buka file titik masuk aplikasi Anda

dan kemudian diminta babel-core oleh require("babel-core");

person Kichnipan    schedule 30.11.2015

Sintaks ini berfungsi pada babel 5, tetapi akan menimbulkan kesalahan sintaksis karena sintaksis pemanggilan fungsi panah tidak standar: arrow diskusi fungsi

Nah, cara mengatasinya seperti ini:

(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