NPM ค้างให้ข้อผิดพลาดเดียวกัน EISDIR: การดำเนินการที่ผิดกฎหมายในไดเร็กทอรีอ่านข้อผิดพลาด (เนทีฟ)


103

ฉันติดอยู่กับข้อผิดพลาดนี้ไม่ว่าฉันจะอยู่ในไดเร็กทอรีใดและฉันพิมพ์อะไรตามหลัง "npm" ใน cmd.exe นี่คือ npm-debug.log:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js' ]
2 info using npm@2.14.12
3 info using node@v4.2.6
4 verbose stack Error: EISDIR: illegal operation on a directory, read
4 verbose stack     at Error (native)
5 verbose cwd C:\Users\me
6 error Windows_NT 6.1.7601
7 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js"
8 error node v4.2.6
9 error npm  v2.14.12
10 error code EISDIR
11 error errno -4068
12 error syscall read
13 error eisdir EISDIR: illegal operation on a directory, read
13 error eisdir This is most likely not a problem with npm itself
13 error eisdir and is related to npm not being able to find a package.json in
13 error eisdir a package you are trying to install.
14 verbose exit [ -4068, true ]

ฉันได้ลองถอนการติดตั้ง / ติดตั้ง nodejs ใหม่หลายครั้งฉันยังลบโฟลเดอร์ npm และ npm-cache ใน C: \ Users \ me \ AppData \ Roaming ฉันไม่แน่ใจว่าเกิดอะไรขึ้น หนึ่งวินาทีมันใช้งานได้ดีและตอนนี้ฉันไม่สามารถกำจัดข้อผิดพลาดนี้ได้ คำอธิบายในบันทึกไม่สมเหตุสมผลเนื่องจากมีข้อผิดพลาดนี้ในไดเร็กทอรีใด ๆ ฉันควรทราบว่าการเรียกใช้พรอมต์คำสั่งเนื่องจากผู้ดูแลระบบไม่ให้ข้อผิดพลาดนี้ ฉันกำลังดึงผมออกในเย็นวันศุกร์นี้เพื่อพยายามแก้ไขความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก!


1
ฉันพบว่าข้อผิดพลาดนี้เป็นเรื่องปกติเมื่อมีคนอัปเดต npm ฉันสงสัยว่าข้อผิดพลาดนี้เริ่มต้นเมื่อคุณอัปเดต npm หรือว่าคุณอัปเดตเลยหรือไม่
Clavin

เป็นคอมพิวเตอร์เครื่องใหม่ดังนั้นฉันจึงติดตั้งโหนดในช่วงสองสามวันที่ผ่านมา ฉันเพิ่งอัปเดตในโหมดผู้ดูแลระบบ แต่โชคไม่ดี
AnotherMike

คำตอบ:


61

ฉันพบปัญหาเดียวกันในขณะที่ฉันกำลังเปลี่ยนการตั้งค่า npm ผมทำผิดพลาดกับหนึ่งในคำสั่งนี้และเพิ่มสายหมายถึงไดเรกทอรีที่ไม่ได้มีอยู่ไปยังnpm config set C:\Users\{User}\.npmrcหลังจากฉันลบบรรทัดนั้นด้วยตนเองจาก.npmrcปัญหาก็หายไป


1
ฉันงี่เง่าแค่ไหน? ฉันอยู่ในโฟลเดอร์ย่อย ahahahah ขอบคุณ
Sampgun

ฉันเหมือนกันฉันกำลังชี้คาเฟ่ไปที่โฟลเดอร์แทนที่จะเป็นไฟล์จริงและทุกnpmคำสั่งหยุดทำงานโดยสมบูรณ์ไม่มีวิธีแก้ปัญหาใด ๆ นอกเหนือจากคำตอบของคุณขอบคุณ!
Giorgio Tempesta

200

EISDIRย่อมาจาก " Error, Is Directory " ซึ่งหมายความว่า NPM พยายามที่จะทำอะไรบางอย่างไปยังแฟ้ม แต่มันเป็นไดเรกทอรี ในกรณีของคุณ NPM พยายาม " อ่าน " ไฟล์ซึ่งเป็นไดเร็กทอรี (บรรทัด: 4) เนื่องจากไม่สามารถดำเนินการได้จึงเกิดข้อผิดพลาด

สามสิ่งที่ต้องแน่ใจที่นี่

  1. ตรวจสอบว่ามีไฟล์อยู่ หากไม่เป็นเช่นนั้นคุณต้องสร้างมันขึ้นมา (หาก NPM ขึ้นอยู่กับข้อมูลเฉพาะใด ๆ ในไฟล์คุณจะต้องมีข้อมูลดังกล่าวที่นั่น)
  2. ตรวจสอบให้แน่ใจว่าเป็นไฟล์ไม่ใช่ไดเร็กทอรี
  3. มีสิทธิ์ที่ถูกต้อง คุณสามารถเปลี่ยนไฟล์ให้มีสิทธิ์ทั้งหมดด้วย "sudo chmod 777 FILE_NAME" (ข้อควรระวัง: คุณกำลังให้สิทธิ์ในการอ่านเขียนและดำเนินการกับทุกคนในไฟล์นั้น)

13
นี่ควรเป็นคำตอบที่ได้รับการยอมรับเนื่องจากมีข้อมูลเกี่ยวกับปัญหาและวิธีแก้ไข
schu34

4
ฉันงี่เง่าแค่ไหน? ฉันอยู่ในโฟลเดอร์ย่อย ahahahah ขอบคุณ
Sampgun

4
ใช้เวลา 3 ชั่วโมงกับสิ่งนี้ ฉันมีโฟลเดอร์ชื่อ back-button.css 3 ชั่วโมงฉันจะไม่กลับมาอีกเลย ขอบคุณที่คุณไม่ได้ 4.
Loke

1
ฉันได้รับสิ่งนี้โดยใช้ fs.writeFile - แต่ข้อผิดพลาดหยุดโปรแกรมของฉันไม่ให้ส่งผ่าน FileName ดังนั้นจึงพยายามเขียนลงในโฟลเดอร์ ขอบคุณ.
Nelles

1
ถูกต้อง. ฉันประสบปัญหานี้ขณะใช้nodemailerในแอปเดสก์ท็อปNW.jsขณะเขียนโค้ดสำหรับตัวจัดการอีเมล ฉันพยายามอ่านไดเร็กทอรีแทนการอ่านไฟล์รูปภาพเพื่อส่งเป็นไฟล์แนบ ขอบคุณมาก.
hygull

13

มีปัญหาเดียวกันในวันนี้หลังจากที่ฉันอัปเกรด npm จากเวอร์ชัน 6.4.1 เป็นเวอร์ชัน 6.5.0 ฉันแก้ไขสิ่งนี้โดยดาวน์โหลดตัวติดตั้ง. pkg (แนะนำสำหรับผู้ใช้ส่วนใหญ่) จากnode.jsและเรียกใช้ในภายหลัง


วิธีการเดียวกันนี้ช่วยฉันได้
DNReNTi

เครื่องของฉันติดตั้งเวอร์ชัน npm เดียวกัน แต่ฉันยังคงประสบปัญหา
Gaurav Paliwal

9

ในกรณีของฉันฉันได้รับ "EISDIR: การดำเนินการที่ผิดกฎหมายในไดเรกทอรีโปรดอ่าน" เนื่องจากในไฟล์ .angular-cli.json ของฉันฉันไม่ได้ระบุเส้นทางแบบเต็มใน "scripts:"

ตัวอย่างเช่นฉันมี

"scripts": [
        "../node_modules/hammerjs",
        "../node_modules/moment"
      ],

ในความเป็นจริงมันควรจะเป็น

"scripts": [
        "../node_modules/hammerjs/hammer.min.js",
        "../node_modules/moment/min/moment.min.js"
      ],

7

ฉันมีปัญหาเดียวกันใน Mac OS X (ติดตั้งด้วย homebrew) และ. npmrc ไม่ใช่ตัวแปรที่จัดเก็บโหนดเดียวเท่านั้น มีไฟล์กำหนดค่า glocal npmrc ใน / usr / local / etc ที่คุณต้องแก้ไขโดยใช้คำสั่งนี้:

sudo nano npmrc

ลบca=บรรทัดหรือการตั้งค่าการกำหนดค่าใดก็ตามที่ทำให้การติดตั้งของคุณขัดข้องบันทึกไฟล์นั้นแล้วลอง npm อีกครั้งและคุณจะเห็นว่ามันใช้งานได้


ดีใจที่ช่วยได้
rncrtr

4

ข้อผิดพลาดแปลก ๆ เหล่านี้เกิดขึ้นเมื่อเร็ว ๆ นี้บนเครื่อง OSX ของฉัน

ฉันสามารถช่วยตัวเองได้อย่างรวดเร็วและสกปรกโดยการวิ่ง:

sudo chmod -R 777 /usr/local/lib/node_modules/

ดูเหมือนจะมีบางอย่างทำให้สิทธิ์การเข้าถึงของโมดูลโหนดส่วนกลางทั้งหมดยุ่งเหยิง


2

สำหรับฉันการแก้ไขคือเพิ่มเครื่องหมายทับหลังชื่อไดเรกทอรี


1

ทำการถอนการติดตั้งอย่างสมบูรณ์รวมถึงการลบพา ธ ฯลฯ และการติดตั้งใหม่ช่วยแก้ปัญหาได้ แต่ปัญหาที่แปลกมาก

วิธีลบ node.js ออกจาก Windows อย่างสมบูรณ์


ในตอนแรกฉันไม่ชอบคำตอบของคุณ แต่ฉันต้องสารภาพว่าสิ่งเดียวกันนี้เกิดขึ้นกับฉัน การสร้างmeteorโครงการใหม่ที่--reactทำให้เกิดปัญหานี้ แต่การลบโครงการและสร้างใหม่อีกครั้งใช้งานได้ (OS X)
Hola Soy Edu Feliz Navidad

1

ฉันมีปัญหานี้ด้วยอึก ปัญหาคืออึกเพิ่มการอ้างอิงให้กับไฟล์ต้นฉบับของฉันและฉันคิดว่า npm พยายามเปิด:

{
  "name": "name",
  "version": "2.0.0",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "appname": "file://gulp",
    "gulp-concat": "^2.6.1",
    "gulp-electron": "^0.1.3",
    "gulp-shell": "^0.5.2",
    "gulp-uglify": "^2.0.0",
    "gulp-util": "^3.0.7",
    "node-7z": "^0.4.0"
  }
}

ตรวจสอบให้แน่ใจว่าไม่มีการอ้างอิงแปลก ๆ ในไฟล์ package.json ของคุณ


1

ตรวจสอบเพื่อให้แน่ใจว่าคุณกำลังรันการติดตั้ง npm จากไดเร็กทอรีที่เหมาะสม

(ไฟล์ package.json อาจเป็นไดเร็กทอรีพิเศษหนึ่งรายการลงมา)


1

มีปัญหาเดียวกันจนกระทั่งฉันลองลบโฟลเดอร์. git มันได้ผล ฉันเดาว่าปัญหาประเภทนี้อาจมีสาเหตุที่แตกต่างกัน


1
เหมือนกันที่นี่ฉันมีที่เก็บ git ภายในที่เก็บ git :) (โมดูลย่อย)
Werner Waage


1

ในกรณีของฉันฉันลืมส่งเส้นทางแบบเต็มของไฟล์ใดไฟล์หนึ่งที่กำลังถาม หลังจากผ่านเส้นทางเต็มของไฟล์ทำงาน :)


1

ในกรณีของฉันฉันกำลังเผชิญปัญหานี้ขณะที่ติดตั้งcreate-react-appในMAC (Mojave OS)ที่มีคำสั่งต่อไปนี้:

sudo npm install create-react-app -g

และมีข้อผิดพลาดเช่นนี้:

npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/scheduler'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/symbol'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/testing'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/util'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/webSocket'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/symbol'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/testing'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/util'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/webSocket'

ฉันได้อ่านnpm.communityที่พยายามติดตั้งโดยไม่sudo:

npm install create-react-app -g

และมันแก้ปัญหาได้จริง .. !!


1

ตรวจสอบให้แน่ใจว่า node_modules (และ root package.json ของคุณ) ไม่มีการอ้างอิงถึงโมดูล "package.json" ของ npm การลบ package.json FOLDER จาก node_modules ช่วยแก้ปัญหาให้ฉันได้


0

ฉันมีปัญหาคล้ายกันขณะตั้งค่ารหัสสำเร็จรูป มันกำลังอ่านไฟล์ bundle.js ของฉันเป็นไดเร็กทอรี ตามที่ระบุไว้ที่นี่ EISDIR หมายถึงไดเร็กทอรีไม่ใช่ไฟล์ เพื่อแก้ไขปัญหานี้ฉันลบไฟล์และสร้างขึ้นใหม่ (เดิมสร้างขึ้นโดยอัตโนมัติ) หากคุณไม่พบไฟล์ (เพราะซ่อนอยู่) เพียงใช้เทอร์มินัลเพื่อค้นหาและลบไฟล์


0

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


0

ฉันรู้ว่านี่ไม่ได้ถามเกี่ยวกับ forever js โดยเฉพาะ .. แต่ google พาฉันมาที่นี่ดังนั้น .. สำหรับฉันมันง่ายเหมือนการลงท้าย

ฉันเพิ่งเปลี่ยน:

forever start -a -l /dev/null/ /var/www/node/my_file.js

ถึง:

forever start -a -l /dev/null /var/www/node/my_file.js

และข้อผิดพลาดหายไป


0

ตรวจสอบให้แน่ใจว่าได้ตรวจสอบเวอร์ชันของ npm ของคุณแล้วว่ามีปัญหาหรือไม่ ฉันมีปัญหาเดียวกันในขณะที่โพสต์นี้และฉันพบว่าเวอร์ชัน npm (6.5) ของฉันกำลังมีปัญหา ฉันต้องถอนการติดตั้งและติดตั้ง npm เวอร์ชัน 6.4.1 ใหม่จากนั้นทุกอย่างก็เริ่มทำงานได้ดีอีกครั้ง



0

ในกรณีของฉันขั้นตอนเหล่านี้ช่วยแก้ปัญหาของฉันได้:

  1. npmกระบวนการยุติ(CTRL + C)
  2. การลบโฟลเดอร์ทั้งหมด
  3. สร้างใหม่
  4. วิ่งnpmอีกครั้ง

0

ในกรณีของฉันฉันใช้ Windows 10 ในภาษาสเปนและเวอร์ชันนี้ผสมชื่อไดเรกทอรีภาษาอังกฤษและภาษาสเปน ปัญหาของฉันคือไดเร็กทอรีเดสก์ท็อปมีชื่อนี้สำหรับบางคำสั่งและสำหรับคำสั่งescritorioอื่น ๆ ฉันเชื่อว่า npm ไม่สามารถแก้ไขปัญหานี้ได้ วิธีแก้ปัญหาของฉันคือเปลี่ยนเป็นไดเร็กทอรีอื่นโดยเริ่มจาก C: \ different เป็นโฮมไดเร็กทอรีของฉัน


0

ฉันประสบปัญหาที่คล้ายกัน ฉันตั้งค่า cafile โดยใช้คำสั่ง:

npm config set cafile PATH_TO_CERTIFICATE

strict-ssl = falseผมสามารถที่จะแก้ปัญหานี้โดยการลบการตั้งค่าไฟล์ใบรับรองและการตั้งค่า


0

ฉันแก้ไขปัญหานี้โดยการย้ายไดเร็กทอรีของฉันจากไดรฟ์ exFAT ซึ่งไม่รองรับการเชื่อมโยง

ไดรฟ์ exFat ของฉันใช้ร่วมกันระหว่าง osx และพาร์ติชัน bootcamp windows ดังนั้นเมื่อฉันพยายามโคลนและ npm ติดตั้งโปรเจ็กต์ของฉันมันล้มเหลว แต่ไม่เคยอธิบายว่า exFAT ไม่รองรับฟังก์ชันนี้

มีไดรเวอร์มากมายที่คุณสามารถติดตั้งเพื่อเพิ่มความสามารถในการ symlink ได้ แต่คุณจะต้องทำการตั้งค่าจำนวนมากด้วยตนเองเมื่อเทียบกับการเรียกใช้สคริปต์ npm แบบธรรมดา


0

สำหรับ Mac OS: ถ้าติดตั้งได้โดยตรงจากเว็บไซต์ nodejs ไฟล์ npmrc จะอยู่ใน/ usr / local / etc / npmrc เพียงแค่ลบการกำหนดค่าที่ไม่ได้กำหนดและปัญหานี้จะได้รับการแก้ไข



0

ในกรณีของฉันC:\Users\{user}\AppData\local\npmไฟล์ถูกซ่อนดังนั้นฉันจึงไม่สามารถค้นหาและลบไดเร็กทอรีปัญหาได้ พาฉันไป DAYS เพื่อตระหนักถึงสิ่งนี้!

ดังนั้นโปรดตรวจสอบอีกครั้งเพื่อยกเลิกการซ่อนโฟลเดอร์ใด ๆ เพื่อที่คุณจะได้ไม่พลาด! นี่คือลิงค์สำหรับทำสิ่งนี้หากคุณไม่ทราบวิธี

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