VS Code กับ es6


106

ฉันได้รับข้อผิดพลาดที่เป็นขุยในรหัสของฉัน 'import' is only available in ES6 (use 'esversion: 6').

ทุกสิ่งที่เกี่ยวข้องกับ es6 กำลังส่งข้อผิดพลาด ไม่แน่ใจว่าต้องกำหนดค่าอะไรเพื่อให้ใช้งานได้

คำตอบ:


222

เพิ่มไฟล์ชื่อ.jshintrcโปรเจ็กต์ของคุณและภายในไฟล์ประเภทนี้:

{
    "esversion": 6
}

ดังที่คุณเห็นที่นี่:

ป้อนคำอธิบายภาพที่นี่

ดูเอกสารjshintตัวเลือกฉบับเต็มได้ที่นี่: http://jshint.com/docs/options


4
jshint.com/docs/options/#esversionสำหรับผู้ที่กำลังมองหาเอกสาร
Jeremy Larter

5
ควรเพิ่มโดยอัตโนมัติ
Xaqron

ดูเหมือนว่าบางครั้งคุณต้องเพิ่มบรรทัดนี้ "moz": จริง
kinsley kajiva

7
สิ่งนี้ไม่ได้ผลสำหรับฉัน (vscode เวอร์ชัน 1.37.1, OS X) ไปที่การตั้งค่าส่วนขยาย -> เลือกแก้ไขใน settings.json ในการเพิ่ม JSON: "jshint.options": { "esversion": 6 } อย่าลืมเครื่องหมายจุลภาคในบรรทัดก่อนหน้า!
sijpkes

1
ที่เดียวที่จะเพิ่มสิ่งนี้อยู่ใน~/settings.jsonประสบการณ์ของฉัน การตั้งค่าระดับโปรเจ็กต์จะไม่ส่งผลกระทบ มันไร้สาระนี่ไม่ใช่ค่าเริ่มต้น มันยากมากที่จะหาวิธีแก้ไขปัญหานี้และในระหว่างนี้ประสบการณ์ของผู้ใช้กับ javascript ใน VS Code ก็ไม่เป็นมิตร น่ารำคาญสุด ๆ ควรสนับสนุน ES6 + โดยค่าเริ่มต้น ทำไมจะไม่?
rjurney

101

แก้ไข: ฉันได้เพิ่มวิธีเปิดใช้งาน es6 หากคุณใช้ ESLint แทน JSHint รวมถึงอัปเดตภาพหน้าจอเนื่องจาก VSCode เปลี่ยนไปตั้งแต่คำตอบเดิมของฉัน

วิธี JSHint:

หากคุณใช้ JSHint คุณสามารถเพิ่มสิ่งต่อไปนี้ในการตั้งค่าของคุณ:

"jshint.options":{
    "esversion":6
}

วิธี ESLint:

หากคุณใช้ ESLint คุณสามารถเพิ่มสิ่งต่อไปนี้ในการตั้งค่าของคุณ:

"eslint.options": {
    "env":{
        "es6":true
    },
    "parserOptions": {
        "ecmaVersion": 6 // or 7,8,9
    }
}

เอกสารการกำหนดค่า ESLint

วิธีอัปเดตการตั้งค่า

  1. ไม่มีการเปิดใช้งาน JSHint หรือ ESLint ใน VS Code เวอร์ชันใหม่ดังนั้นคุณจะต้องติดตั้งส่วนขยายโดยไปที่ส่วนขยายจากนั้นค้นหา Linter ที่คุณต้องการ

  2. ใน VS Code ไปที่ settings

การตั้งค่ารหัส VS

  1. เมื่อการตั้งค่าปรากฏขึ้นคุณจะเห็นส่วนการตั้งค่า:

แท็บการตั้งค่าผู้ใช้และพื้นที่ทำงาน

โปรดทราบว่ามีสองส่วนที่คุณสามารถปรับแต่งการตั้งค่าการตั้งค่าผู้ใช้และการตั้งค่าพื้นที่ทำงานได้

การตั้งค่าผู้ใช้เป็นที่ที่คุณควรใช้การตั้งค่าส่วนกลางที่คุณต้องการสำหรับโครงการใด ๆ ที่คุณจะดำเนินการ

การตั้งค่าพื้นที่ทำงานคือที่ที่คุณสามารถทำการเปลี่ยนแปลงการตั้งค่าที่ควรใช้กับโปรเจ็กต์ปัจจุบันของคุณเท่านั้น

ในกรณีของฉันเนื่องจากฉันรู้ว่ามีเพียงโปรเจ็กต์บางโปรเจ็กต์ของฉันเท่านั้นที่สามารถใช้ ES6 ได้ฉันจึงต้องมีคำใบ้ข้อผิดพลาดเพื่อเตือนฉันหากฉันใช้ ES6 โปรเจ็กต์ที่ไม่ใช่ ES6 ของฉัน ... ดังนั้นฉันจึงตั้งค่านี้เป็นการตั้งค่าพื้นที่ทำงานของฉันเท่านั้น

แต่ถ้าคุณรู้ว่าสิ่งที่คุณรหัสใน VS รหัสเป็นไปได้ ES6 โครงการแล้วบันทึกขั้นตอนและเพิ่มที่คุณตั้งค่าผู้ใช้

  1. คลิกที่ User / Workspace ขึ้นอยู่กับความต้องการของคุณ ค้นหา JSHint หรือ ESLint (แล้วแต่คุณจะใช้) คลิกที่ลิงก์แก้ไขใน settings.jsonไม่ว่าจะลิงก์ใด

แก้ไขใน settings.json

  1. เพิ่มการตั้งค่าที่เกี่ยวข้องขึ้นอยู่กับว่าคุณใช้ JSHint หรือ ESLint:

JSHint

การเพิ่มการตั้งค่า JSHint

ESLint

การเพิ่มการตั้งค่า ESLint


6
นี่เป็นคำตอบที่ดีและ +1 โดยไม่ต้องสร้างไฟล์เพิ่มเติมในไดเรกทอรีโครงการ ... ภาพหน้าจอยังมีประโยชน์มากขอบคุณมาก!
twknab

นอกจากนี้ยังดีกว่าเนื่องจากสามารถทำได้โดยอัตโนมัติสำหรับโครงการใหม่แทนที่จะสร้างไฟล์ใหม่หรือเก็บไว้ในพื้นที่ทำงานเดียว
Jan Sila

2
ไม่ได้ผลสำหรับฉันด้วยเหตุผลบางประการ ฉันลองใช้ทั้งในผู้ใช้และการตั้งค่าพื้นที่ทำงาน
LondonGuy

1
ขอบคุณมากสำหรับคำอธิบายโดยละเอียดมันมีประโยชน์มากจริงๆ
Ketan Ramteke

22

คุณสามารถเพิ่มลง"esversion": 6ใน jshint.options ในการตั้งค่าผู้ใช้

{
  "jshint.options": {
    "esversion": 6
  }
}

6

เพื่อสรุปคำแนะนำที่ยอดเยี่ยมที่ส่งไปแล้วคุณยังสามารถตั้งค่านี้เป็นไฟล์ทีละไฟล์โดยเพิ่มบรรทัดที่หลีกเลี่ยงนี้ (และคล้ายกับการตั้งค่า jshint อื่น ๆ ) ที่ด้านบนของไฟล์ของคุณ

// jshint esversion:6

จริงๆแล้วคุณสามารถเพิ่มได้ทุกที่ แต่จะมีผลเฉพาะโค้ดที่ตามมาเท่านั้นทำให้คุณสามารถเปิดและปิดการตั้งค่าได้หากคุณหมดหวังที่จะทำอะไรแปลก ๆ


0

ตรวจสอบให้แน่ใจว่าคุณได้ทำการกำหนดค่าข้างต้นด้วย json แล้ว แต่ยังลบ / ปิดการใช้งานjshintส่วนขยายสำหรับพื้นที่ทำงานด้วยหากคุณใช้eslintและในทางกลับกัน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.