วิธีแก้ไข 'fs: การประเมินแหล่งโมดูลดั้งเดิมไม่รองรับ' - graceful-fs


162

เมื่อเร็ว ๆ นี้ฉันได้เปลี่ยนไปใช้โหนด v.6 และมันเริ่มสร้างปัญหามากขึ้นเรื่อย ๆ เมื่อใช้งานบิลด์ปกติ grunt / gulp / webpack

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

$ gulp
[14:02:20] Local gulp not found in ~/_Other/angular-2-ts/angular2-seed
[14:02:20] Try running: npm install gulp

ในขณะที่อึกและปลั๊กอินและโมดูลอื่น ๆ ทั้งหมดได้รับการติดตั้ง (และแม้กระทั่งติดตั้งใหม่ผ่านrm -rf node_modules) ในโฟลเดอร์ / node_modules

ข้อผิดพลาดส่วนใหญ่มีลักษณะคล้ายกัน

(node:42) fs: re-evaluating native module sources is not supported. 
If you are using the graceful-fs module, 
please update it to a more recent version.

ด้วย 42 เป็นจำนวนโดยพลการ

เช่นเดียวกับในปัญหาที่ฉันส่งไป - ใน repular angular2-seed https://github.com/mgechev/angular2-seed/issues/902

สิ่งที่ฉันพยายามทำคือลดระดับเป็น Node v.5 ผ่าน n ( https://www.npmjs.com/package/n ) - มันใช้ได้ จากนั้นลบnode_modulesโฟลเดอร์ทั้งหมดแล้วทำ

npm info graceful-fs -v
3.3.6

ตกลงให้อัปเกรดหรือลบและติดตั้งใหม่:

npm i graceful-fs@latest
npm i graceful-fs@4.1.4
sudo npm i graceful-fs@4.1.4 -g

ผลลัพธ์ทั้งหมดใน

npm info graceful-fs -v
3.3.6

ดังนั้นตอนนี้ฉันติดอยู่กับความสง่างาม -fs 3.3.6หรือแย่ลงในบางโมดูลพึ่งพาเช่น

$ angular2-seed
$ npm install

//other lines..
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before 
will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 
as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.

สิ่งที่อาจเป็นกลยุทธ์ที่นี่:

  • แก้ไขด้วยตนเองทั้งหมดที่มีความสง่างาม -fs <4.0.0?
  • มีสวิตช์ระดับโลกที่จะใช้รุ่นแพคเกจเฉพาะหรือไม่
  • ติดตั้งใหม่ทุกอย่างหรือไม่

ฉันมีปัญหาเดียวกันกับอึกและโมดูลบางส่วนของฉัน ฉันแก้ไขโมดูลของฉันโดยการอัพเกรดโมดูลเพื่อใช้เกรซ -fs ล่าสุด แต่ฉันไม่แน่ใจว่ามีวิธีแก้ปัญหาสำหรับโมดูลอื่น ๆ ที่ยังไม่ได้อัพเกรด
Jeremy Chone

ดูเหมือนว่าจะไม่ได้รับการแก้ไขใน Gulp 3.x และคุณจะต้องอัปเกรดเป็น Gulp 4.x github.com/gulpjs/gulp/issues/1571
dtothefp

คำตอบ:


170

ฉันมีปัญหานี้และฉันสามารถแก้ไขได้โดยอัปเดต npm

sudo npm update -g npm

ก่อนการอัพเดตผลลัพธ์ของnpm info graceful-fs | grep 'version:'คือ:

version: '3.3.12'

หลังจากอัพเดตผลลัพธ์คือ:

version: '3.9.3'

ขอบคุณ @Jorge สิ่งนี้ช่วยแก้ไขปัญหา ฉันยังคงได้รับ appname@0.1.x / เส้นทาง / ของ / แอปพร้อมกับ Graceful-fs@4.1.4 ไฮไลต์ทุกครั้งที่ฉันเรียกใช้การติดตั้ง npm ในไดเรกทอรีแอปของฉัน แต่ตอนนี้ฉันอยู่กับสิ่งนั้นแล้ว
Geo

สวัสดี @Geo เหมือนกันที่นี่ดูคำตอบโดย analog-nico เรามีแพ็คเกจที่ต่างกันเพราะเครื่องมืออื่น ๆ ขึ้นอยู่กับเวอร์ชันเหล่านั้นอย่างเคร่งครัด ในการกำจัดคำเตือนเราจำเป็นต้องอัพเกรดทั้งหมดหรือค้นหาการเปลี่ยน
Asimov

5
สิ่งนี้ไม่ได้ผลสำหรับฉันฉันต้องวิ่งnvm use v6.2.1
Nicwenda

46
โปรดทราบว่าnpm info graceful-fs -vส่งคืนเวอร์ชันของ npm (เหมือนกับการรันnpm -v) และไม่ใช่Grace -fs ที่จะได้รับรุ่นสง่างาม-FS npm info graceful-fs | grep version:ใช้สิ่งที่ต้องการ
nstCactus

6
@Asimov มันก็ใช้ได้กับฉันเหมือนกัน นอกจากนี้หากคุณติดตั้ง NodeJS เมื่อเร็ว ๆ นี้ (ฉันติดตั้ง Node ผ่านแพคเกจบนเว็บไซต์ของพวกเขาแล้วแทนที่มันด้วยหนึ่งจาก homebrew) ทำงานrm -rf node_modules && npm installในโฟลเดอร์บ้านโครงการ
Dylanthepiguy

73

พิมพ์npm list graceful-fsและคุณจะเห็นเวอร์ชันของ Graceful-fs ที่ติดตั้งอยู่ในปัจจุบัน

ในกรณีของฉันฉันได้รับ:

npm list graceful-fs

@request/promise-core@0.0.1 /projects/request/promise-core
+-- gulp@3.9.1
| `-- vinyl-fs@0.3.14
|   +-- glob-watcher@0.0.6
|   | `-- gaze@0.5.2
|   |   `-- globule@0.1.0
|   |     `-- glob@3.1.21
|   |       `-- graceful-fs@1.2.3        <==== !!!
|   `-- graceful-fs@3.0.8 
`-- publish-please@2.1.3
  +-- nsp@2.4.0
  | `-- nodesecurity-npm-utils@4.0.1
  |   `-- silent-npm-registry-client@2.0.0
  |     `-- npm-registry-client@7.1.0
  |       `-- graceful-fs@4.1.3 
  `-- read-pkg@1.1.0
    `-- load-json-file@1.1.0
      `-- graceful-fs@4.1.4

อย่างที่คุณเห็นgulpลึกลงไปขึ้นอยู่กับรุ่นเก่ามาก น่าเสียดายที่ฉันไม่สามารถอัปเดตด้วยตนเองnpm update graceful-fsได้ gulpจะต้องอัปเดตการอ้างอิงของพวกเขา ดังนั้นหากคุณมีกรณีเช่นนี้คุณจะโชคไม่ดี แต่คุณอาจจะเปิดปัญหาสำหรับโครงการที่มีการพึ่งพาเก่า - gulpคือ


13
ในตัวอย่างเฉพาะของคุณ FYI gulpจะไม่เปลี่ยนแปลงในรุ่น 3 แต่เฉพาะในรุ่น 4: github.com/gulpjs/gulp/issues/1571
JBE

2
นี่เป็นสิ่งที่สำหรับฉันแล้วสุดท้ายกดเพื่อเอาอึก
Darko Z

ในกรณีของฉันก่อน v4 graceful-fsพึ่งพาโมดูลมาจากnpmตัวเอง (เวอร์ชั่น 3.10.3) cmd-shim@2.0.2ผ่าน ฉันไม่เห็นนี้จนกว่าฉันจะจดทะเบียนทั่วโลก พึ่งพาการใช้graceful-fs npm list -g graceful-fs
Rusty Shackleford

สิ่งนี้ช่วยฉันแก้ปัญหาได้ แพ็คเกจที่สง่างามของฉันเป็นรุ่นล่าสุด แต่แพ็คเกจอื่น ๆ สองสามชุดยังคงใช้เวอร์ชันที่เก่ากว่า
skerit

21

แก้ไขข้อผิดพลาดนี้ด้วยการติดตั้งอึก

npm uninstall gulp
npm install gulp

เสียงเหมือนอึกได้แก้ไขปัญหานี้แล้ว - จำไม่ได้ว่าฉันติดตั้งอึกไว้ด้วย - บันทึก - dev หรือไม่มาก่อน แต่วิธีการทำงานของคุณจากโฟลเดอร์โครงการของฉัน
ลงจอด

แก้ไขปัญหาให้ฉันด้วย
Shady Keshk

ใช่ดูเหมือนว่าปัญหาการพึ่งพาอึกที่เก่ากว่า
serraosays


1

ตามที่อธิบายไว้ที่นี่คุณยังสามารถลองคำสั่ง

npm cache clean

ที่แก้ไขให้ฉันหลังจากขั้นตอนอื่นไม่ได้ผลลัพธ์เต็มที่ (นอกเหนือจากการอัปเดตทุกอย่าง)


1

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


1

ฉันสามารถแก้ไขได้โดย:

  1. อัปเดตโดย package.json
  2. การลบโฟลเดอร์ node_modules
  3. การดำเนินการ npm install

0

หากคุณกำลังเรียกใช้ nvm คุณอาจต้องการเรียกใช้nvm use <desired-node-version>นี้จะทำให้โหนดสอดคล้องกับ npm


0

หรือพยายามอัปเดตnode:

brew upgrade node

หากมีการติดตั้งด้วยbrew(เช่นในกรณีของฉัน) sudo npm update -g npmไม่ได้แก้ปัญหา "เดียวกัน" สำหรับฉัน



0

ในกรณีของโครงการ Cordova ของฉันการถอนการติดตั้งและติดตั้ง Cordova -g จะแก้ไขปัญหาให้ฉันได้

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