เราพบปัญหาเดียวกันเมื่ออัปเดตโปรเจ็กต์ดั้งเดิมโดยขึ้นอยู่กับgulp@3.9.1
Node.js 12
แก้ปัญหาเหล่านี้ช่วยให้คุณสามารถใช้ Node.js 12 gulp@3.9.1
โดยเอาชนะกับรุ่นgraceful-fs
4.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.0
monkeypatches Node.jsfs
สิ่งนี้เคยทำงานกับ Node.js จนถึงเวอร์ชั่น 11.15 (ซึ่งเป็นรุ่นจากสาขาการพัฒนาและไม่ควรใช้ในการผลิต)
graceful-fs@^4.0.0
ไม่ใช้ monkeypatch Node.js fs
โมดูลอีกต่อไปซึ่งทำให้เข้ากันได้กับ Node.js> 11.15
โปรดทราบว่านี้ไม่ได้เป็นวิธีการแก้ปัญหายืนต้น gulp@^4.0.0
แต่มันจะช่วยให้เมื่อคุณไม่ได้มีเวลาที่จะปรับปรุงไป