เราพบปัญหาเดียวกันเมื่ออัปเดตโปรเจ็กต์ดั้งเดิมโดยขึ้นอยู่กับgulp@3.9.1Node.js 12
แก้ปัญหาเหล่านี้ช่วยให้คุณสามารถใช้ Node.js 12 gulp@3.9.1โดยเอาชนะกับรุ่นgraceful-fs4.2.3
หากโครงการของคุณไม่ได้ทำงานอย่างแข็งขันและคุณใช้ npm
สร้างnpm-shrinkwrap.jsonไฟล์ที่มีสิ่งนี้:
{
"dependencies": {
"graceful-fs": {
"version": "4.2.3"
}
}
}
ยอมรับnpm-shrinkwrap.jsonไฟล์นี้ จากนั้นเรียกใช้งานnpm installซึ่งจะอัปเดตnpm-shrinkwrap.jsonไฟล์
น่าเสียดายที่โซลูชันนี้ใช้งานไม่ได้อีกต่อไปหากคุณnpm installอีกครั้ง ดูวิธีแก้ไขปัญหาอื่น ๆ ด้านล่าง
หากโครงการของคุณอยู่ระหว่างการพัฒนาและคุณใช้ yarn v1
เส้นด้าย v1 สนับสนุนการแก้ไขแพคเกจที่เป็นรุ่นที่กำหนดไว้ คุณต้องเพิ่มresolutionsหัวข้อในpackage.json:
{
// Your current package.json contents
"resolutions": {
"graceful-fs": "4.2.3"
}
}
ขอบคุณ@jazdสำหรับวิธีนี้ในการแก้ปัญหา
หากโครงการของคุณอยู่ในการพัฒนาที่ใช้งานอยู่และคุณใช้ npm
การใช้npm-force-resolutionsเป็นสคริปต์ติดตั้งล่วงหน้าคุณสามารถรับผลลัพธ์ที่คล้ายกันกับ yarn v1 คุณต้องแก้ไข package.json ด้วยวิธีนี้:
{
// Your current package.json
"scripts": {
// Your current package.json scripts
"preinstall": "npx npm-force-resolutions"
},
"resolutions": {
"graceful-fs": "4.2.3"
}
}
npm-force-resolutionsจะแก้ไขpackage-lock.jsonไฟล์เพื่อตั้งgraceful-fsเป็นเวอร์ชั่นที่ต้องการก่อนที่installจะทำ
หากคุณใช้.npmrcไฟล์ที่กำหนดเองในโครงการของคุณและมีพร็อกซีหรือรีจีสตรีที่กำหนดเองคุณต้องเปลี่ยนnpx npm-force-resolutionsเป็นnpx --userconfig .npmrc npm-force-resolutionsเพราะ ณ ตอนนี้npxไม่ได้ใช้.npmrcไฟล์โฟลเดอร์ปัจจุบันตามค่าเริ่มต้น
ต้นกำเนิดของปัญหา
ปัญหานี้เกิดขึ้นจากข้อเท็จจริงที่gulp@3.9.1 ขึ้นอยู่กับโมดูลgraceful-fs@^3.0.0monkeypatches Node.jsfs
สิ่งนี้เคยทำงานกับ Node.js จนถึงเวอร์ชั่น 11.15 (ซึ่งเป็นรุ่นจากสาขาการพัฒนาและไม่ควรใช้ในการผลิต)
graceful-fs@^4.0.0ไม่ใช้ monkeypatch Node.js fsโมดูลอีกต่อไปซึ่งทำให้เข้ากันได้กับ Node.js> 11.15
โปรดทราบว่านี้ไม่ได้เป็นวิธีการแก้ปัญหายืนต้น gulp@^4.0.0แต่มันจะช่วยให้เมื่อคุณไม่ได้มีเวลาที่จะปรับปรุงไป