babel-node ไม่รู้จัก es2015 ใช่ไหม

ฉันกำลังพยายามเรียกใช้ Relay-starter-kit 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

แก้ไข: ตอนนี้ฉันได้ลองดาวน์โหลดชุดรีเลย์สตาร์ทและเรียกใช้ "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