ใน VS Code ฉันได้รับข้อผิดพลาดนี้ 'ไม่สามารถโหลดโมดูล พยายามโหลดสวยกว่าจาก package.json '


21

เมื่อฉันใช้ VS Code และเปิดโครงการฉันจะได้รับการแจ้งเตือนนี้ที่มุมล่างขวา:

Failed to load module. If you have prettier or plugins referenced in package.json, ensure you have runติดตั้ง NPMAttempted to load prettier from package.json.

Source: Prettier Code Format (Extension)

การเรียกใช้การติดตั้ง npm ไม่สามารถแก้ไขปัญหานี้ได้ ทุกคนมีความคิดว่าทำไมเป็นอย่างนั้นหรือฉันสามารถแก้ไขได้อย่างไร


มีปัญหาเดียวกันเช่นกัน คุณอยู่เบื้องหลังพรอกซีโดยบังเอิญหรือไม่
ไบรซ์

ดูเหมือนว่ามีบางเส้นทางเสียบนเครื่องของฉันหรือมีบางอย่างขาดหายไป เรามี package.json พร้อมสคริปต์เพื่อให้เล่นได้ดีและ linter การรันสคริปต์จากไฟล์ package.json ไม่ได้สวยกว่า แต่ถ้าฉันฟอร์แมตด้วยตัวเอง (ตัวเลือก + shift + f บนเครื่อง mac) มันใช้งานได้ แปลกประหลาดและน่ารำคาญที่ต้องทำการฟอร์แมทแต่ละไฟล์ด้วยตนเอง
ghostagent151

สิ่งนี้ดูเหมือนจะเป็นการ "เพิ่มเติม" ล่าสุดกับรหัส VS แม้ในอดีตจะเคยใช้ดีกว่า แต่เราไม่ได้สังเกตปัญหานี้ ฉันไม่ได้ใช้ VS Code เวอร์ชันใดนับจากนี้กลายเป็นปัญหา
Manfred

มีปัญหาเดียวกันตั้งแต่ไม่กี่วันที่ผ่านมา ไม่มีพร็อกซีหรือไฟร์วอลล์ - มีอะไรบางอย่างที่สวยกว่าในการอัพเดท VS Code ล่าสุด
Hemal

3
นี่คือปัญหา GitHub ที่เกี่ยวข้อง พวกเขากำลังหาข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้ (และถ้ามี repo ที่สามารถแบ่งปันได้) github.com/prettier/prettier-vscode/issues/1066
Kasper

คำตอบ:


16

นี่เป็นวิธีแก้ปัญหาที่เหมาะกับฉัน

1.ติดตั้ง Prettier Globally ผ่าน npm หากคุณไม่เคยติดตั้งทั่วโลก

npm i prettier -g

2.ค้นหาและใช้การPrettier Pathตั้งค่าส่วนขยายในการตั้งค่ารหัส VS ของคุณ

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

// คุณสามารถนำทางไปยังรหัส VS Settings > Extensions > Prettierสำหรับการตั้งค่าส่วนขยายที่น่าสนใจทั้งหมด

3.อัปเดตเป็นPrettier PathPrettier ที่ติดตั้งไว้ทั่วโลกของคุณ

ตัวอย่างเช่น

/usr/local/lib/node_modules/prettier (Mac OS)

\AppData\Roaming\npm\node_modules\prettier (Windows)


ฉันได้ติดตั้ง Prettier ไปทั่วโลกแล้ว เมื่อฉันไปสู่การตั้งค่ารหัส VS Prettier Pathฉันค้นหา ผมเห็น 2 ตัวเลือกที่นี่และPrettier:Config Path Prettier: Prettier Pathฉันใช้แม็ค ฉันควรจะเพิ่ม/usr/local/lib/node_modules/prettierทั้งสองเส้นทางหรือแค่แรก?
ghostagent151

1
@ ghostagent151 เพียงอันสุดท้าย "Prettier: Prettier Path" ตามภาพหน้าจอ
donovan

นี่คือปัญหาอื่นที่ฉันเห็น หากฉันดาวน์โหลดส่วนขยายที่สวยกว่าด้วยรหัส vs ฉันมีการตั้งค่าของฉันเพื่อให้การบันทึกส่วนนี้ใช้กับ Prettier กับรหัสของฉันโดยอัตโนมัติ อย่างไรก็ตามดูเหมือนว่าจะมีการใช้ Prettier ที่แตกต่างกันสองแบบ ถ้าฉันเรียกใช้npm run prettierจากบรรทัดคำสั่งตัวอย่างเช่นตัวแปรที่มีสตริงที่มีเครื่องหมายคำพูดคู่จะถูกแปลงเป็นเครื่องหมายคำพูดเดี่ยว ถ้าฉันบันทึกและใช้รูปแบบอัตโนมัติพวกเขาจะถูกแปลงเป็นเครื่องหมายคำพูดคู่ ไม่แน่ใจว่าเกิดอะไรขึ้นกับสิ่งนั้น
ghostagent151

1
@ ghostagent151 นี่เป็นปัญหาที่แตกต่าง การnpm run prettierใช้งานจะใช้ตัวกำหนดที่สวยที่สุดในโครงการของคุณnode_modulesหากมีpackage.jsonอยู่ในโครงการ คำแนะนำของฉันคือคุณปิด VS Code formatOnSaveหากคุณจะใช้กฎการจัดรูปแบบที่กำหนดเองสำหรับโครงการของคุณ เพื่อหลีกเลี่ยงรูปแบบการเขียนทับ
Tunji Oyeniran

1
เส้นทางของคุณไปยังโมดูลที่ติดตั้งทั่วโลกจะแตกต่างกันไปขึ้นอยู่กับระบบปฏิบัติการ แต่วิธีการติดตั้ง npm (เช่น nvm, ฯลฯ ) วิธีที่ง่ายที่สุดในการรับเส้นทางคือการใช้งานnpm root -g
BoDeX

2

ปรับปรุง

ตอนนี้ใช้ได้กับฉันด้วยprettier-vscode4.1.1 และprettier2.0.4 ลองดู ฉันสามารถใช้เวอร์ชั่นที่สวยกว่าหรือได้รับการติดตั้งในเครื่อง

การเปลี่ยนแปลงที่โดดเด่น :

  • [4.0.0] อัปเดตสวยกว่าเป็น 2.0
  • [4.1.0] เพิ่มตัวเลือกการกำหนดค่าด้วยโหนดโมดูลเพื่อเปิดใช้งานการประมวลผลไฟล์ในโฟลเดอร์ node_modules [ค่าเริ่มต้น: เท็จ]
  • [4.1.0] รองรับการโหลด Prettier จาก node_modules แม้ว่าจะไม่ปรากฏว่าเป็นการพึ่งพาโดยตรงใน package.json

โพสต์ต้นฉบับ

node_modulesผมพบปัญหานี้เมื่อตรวจสอบรหัสที่มาของแพคเกจภายนอกภายใต้

วิธีแก้ปัญหาคือการลบprettierรายการในpackage.jsonแพคเกจนี้ - ไม่prettierจำเป็นต้องติดตั้งภายใน / ส่วนกลาง ตัวอย่าง :

{
  "devDependencies": {
    ...
    "prettier": "^1.19.1", // remove this line completely
  },
}

รักษาความpackage.jsonถูกต้อง - ไม่มีเครื่องหมายจุลภาคต่อท้ายอย่าเพิ่งแสดงความคิดเห็นในบรรทัด เหตุผลที่มันทำงานคือ:

ส่วนขยายจะค้นหาต้นไม้จนกระทั่งเรายื่น package.json หาก package.json นั้นมี prettier ส่วนขยายจะใช้ส่วนนั้นมิฉะนั้นจะกลับไปใช้เวอร์ชันที่รวมไว้ของ prettier ลิงค์

ฉันเดาว่านามสกุลต้องการที่จะใช้จากแพคเกจที่แม้ว่าจะเป็นprettierdevDependencies

ควรจะมีอันตรายที่จะลดลงไม่จากแพคเกจในdevDependency node_modulesสิ่งนี้ยังทำให้สามารถใช้prettierเวอร์ชันที่มาพร้อมกับprettier-vscode(ไม่จำเป็นต้องติดตั้ง)


1

ฉันเพิ่งพบเจอสิ่งนี้และพบว่าฉันมีข้อผิดพลาดทางไวยากรณ์ในไฟล์ package.json ของฉัน มีเครื่องหมายจุลภาคต่อท้ายอยู่บนบรรทัดเดียวและดูเหมือนว่าเป็นสาเหตุของฉัน

ฉันสังเกตสิ่งนี้เพราะฉันเห็นผลลัพธ์ต่อไปนี้เมื่อพยายามเรียกใช้การทดสอบเชิงมุม:

C:\... [feature/migrate-away-from-angular-http +2 ~6 -0 | +0 ~5 -0 !]> ng test
10% building 3/3 modules 0 active20 11 2019 21:11:18.638:WARN [karma]: No captured browser, open http://localhost:9876/
20 11 2019 21:11:19.575:INFO [karma-server]: Karma v4.1.0 server started at http://0.0.0.0:9876/
20 11 2019 21:11:19.576:INFO [launcher]: Launching browsers Chrome with concurrency unlimited
20 11 2019 21:11:19.594:INFO [launcher]: Starting browser Chrome

ERROR in ./src/app/app.component.spec.ts
Module not found: SyntaxError: C:\...\package.json (directory description file): SyntaxError: C:\...\package.json (directory description file): SyntaxError: Unexpected token } in JSON at position 167
 @ ./src/app/app.component.spec.ts 7:31-75
 @ ./src sync \.spec\.ts$
 @ ./src/test.ts
ERROR in ./src/app/app.component.ts

1

เมื่อตั้งค่า Prettier สิ่งสำคัญคือการกำหนดค่าต่อโครงการ ไม่ใช่ทุกโปรเจ็กต์ที่ใช้สไตล์โค้ดเดียวกันดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องเคารพสไตล์ของโปรเจ็กต์ที่คุณกำลังใช้งานอยู่

Repo สาธิตbahmutov/prettier-config-exampleมีสองโฟลเดอร์ย่อยโดยแต่ละอันมีสไตล์รหัสที่แตกต่างกันซึ่งบังคับใช้โดย Prettier ในความเป็นจริงแต่ละ repos ของคุณจะมีสไตล์; ฉันใช้โฟลเดอร์ย่อยเพื่อให้ตัวอย่างง่าย

npm install --save-dev --save-exact prettier


1

พยายามแก้ไขปัญหาทั้งหมดที่มีให้ในที่นี่ไม่ได้ช่วย การอัปเดตรหัส Visual Studio แก้ไขปัญหานี้


0

แก้ไขปัญหานี้ด้วยการทำnpm installทั่วโลก

node_nodulesผมมีปัญหานี้เมื่อฉันทำความสะอาดของฉัน ฉันได้eslintติดตั้งที่ดีขึ้นทั่วโลก และเมื่อฉันลบnode_modulesข้อผิดพลาดนี้ระบุปรากฏขึ้น

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