NPM bị lỗi khi đưa ra cùng một lỗi EISDIR: Hoạt động bất hợp pháp trên một thư mục, đọc tại lỗi (bản địa)


102

Tôi gặp phải lỗi này bất kể tôi đang ở thư mục nào và tôi nhập gì sau "npm" trong cmd.exe. Đây là 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 ]

Tôi đã thử gỡ cài đặt / cài đặt lại nodejs nhiều lần, thậm chí tôi đã xóa các thư mục npm và npm-cache trong C: \ Users \ me \ AppData \ Roaming. Tôi không chắc điều gì đã sai để gây ra điều này. Một giây nó hoạt động tốt và bây giờ tôi không thể loại bỏ lỗi này. Lời giải thích trong nhật ký không có ý nghĩa, vì nó gây ra lỗi này trong bất kỳ thư mục nào. Tôi nên lưu ý rằng việc chạy dấu nhắc lệnh với tư cách là quản trị viên không đưa ra lỗi này. Tôi sẽ nhổ tóc vào tối thứ Sáu tuần này để cố gắng sửa lỗi này, mọi sự giúp đỡ sẽ được đánh giá cao!


1
Tôi thấy lỗi này thường xảy ra khi mọi người cập nhật npm, tôi tự hỏi liệu lỗi này có bắt đầu khi bạn cập nhật npm hay thậm chí bạn đã cập nhật?
Clavin

Đó là một máy tính mới nên tôi đã cài đặt nút trong vài ngày qua. Tôi chỉ làm một bản cập nhật trong chế độ người quản trị, nhưng không may mắn
AnotherMike

Câu trả lời:


60

Tôi đã gặp phải sự cố tương tự khi đang thay đổi một số cài đặt npm. Tôi đã mắc lỗi với một npm config setlệnh và điều này đã thêm một dòng tham chiếu đến một thư mục không tồn tại C:\Users\{User}\.npmrc. Sau khi tôi xóa dòng đó theo cách thủ công .npmrc, sự cố đã biến mất.


1
Tôi thật ngốc làm sao? Tôi đã ở trong một thư mục con ahahahah cảm ơn.
Sampgun

Tôi cũng vậy, tôi đã trỏ cafile vào một thư mục thay vì một tệp thực tế và mọi npmlệnh ngừng hoạt động hoàn toàn, không có giải pháp nào hoạt động ngoài câu trả lời của bạn, cảm ơn!
Giorgio Tempesta

194

EISDIR là viết tắt của " Error, Is Directory ". Điều này có nghĩa là NPM đang cố gắng thực hiện điều gì đó với một tệp nhưng nó là một thư mục . Trong trường hợp của bạn, NPM đang cố gắng " đọc " một tệp là một thư mục (Dòng: 4). Vì không thể thực hiện thao tác nên lỗi sẽ được ném ra.

Ba điều cần đảm bảo ở đây.

  1. Đảm bảo rằng tệp tồn tại. Nếu không, bạn cần tạo nó. (Nếu NPM phụ thuộc vào bất kỳ thông tin cụ thể nào trong tệp, bạn sẽ cần phải có thông tin đó ở đó).
  2. Đảm bảo rằng nó trên thực tế là một tệp chứ không phải thư mục.
  3. Nó có quyền phù hợp. Bạn có thể thay đổi tệp để có tất cả các quyền với "sudo chmod 777 FILE_NAME". (Cẩn thận: Bạn đang cấp quyền Đọc, Ghi và Thực thi cho mọi quyền trên tệp đó)

13
Điều này sẽ là câu trả lời chấp nhận imo vì nó có chứa thông tin về các vấn đề cũng như là một giải pháp
schu34

4
Tôi thật ngốc làm sao? Tôi đã ở trong một thư mục con ahahahah cảm ơn.
Sampgun

3
Đã dành 3 giờ cho việc này. Tôi có một thư mục tên là back-button.css. 3 giờ tôi sẽ không bao giờ quay lại. Nhờ bạn đó không phải là 4.
Loke

1
Tôi nhận được điều này bằng cách sử dụng fs.writeFile - nhưng một lỗi đã ngăn chương trình của tôi chuyển FileName nên nó đang cố gắng ghi trên một thư mục. Cảm ơn.
Nelles

1
Đúng rồi. Tôi đã gặp phải sự cố này khi sử dụng gật đầu trong ứng dụng máy tính để bàn NW.js trong khi viết mã cho trình quản lý email. Tôi cũng đang cố gắng đọc thư mục thay vì đọc tệp hình ảnh để gửi dưới dạng tệp đính kèm. Cảm ơn rât nhiều.
hygull 21/1218

13

Hôm nay gặp vấn đề tương tự sau khi tôi nâng cấp npm từ phiên bản 6.4.1 lên phiên bản 6.5.0. Tôi đã sửa lỗi này bằng cách tải xuống trình cài đặt .pkg (được khuyến nghị cho hầu hết người dùng) từ node.js và chạy nó sau đó.


Phương pháp chính xác cùng giúp cho tôi
DNReNTi

máy tính của tôi đã cài đặt cùng một phiên bản NPM nhưng tôi vẫn đang phải đối mặt với vấn đề
Gaurav Paliwal

9

Trong trường hợp của tôi, tôi nhận được "EISDIR: hoạt động bất hợp pháp trên một thư mục, hãy đọc" bởi vì trong tệp .angular-cli.json của tôi, tôi đã không cung cấp một đường dẫn đầy đủ trong "scripts:"

Ví dụ tôi đã có

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

Trong thực tế, nó đáng lẽ phải

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

7

Tôi đã gặp vấn đề tương tự trên Mac OS X (được cài đặt bằng homebrew) và .npmrc không phải là biến cấu hình được lưu trữ nút vị trí duy nhất. Có một tệp cấu hình glocal npmrc trong / usr / local / etc mà bạn phải chỉnh sửa bằng lệnh này:

sudo nano npmrc

Xóa ca=dòng hoặc bất kỳ cài đặt cấu hình nào đã phá vỡ cài đặt của bạn, lưu tệp đó và thử lại npm và bạn sẽ thấy nó hoạt động.


Rất vui vì tôi có thể giúp.
rncrtr

4

Những lỗi lạ này đã xảy ra gần đây trên máy OSX của tôi.

Tôi có thể tự giúp mình một cách nhanh chóng và hiệu quả bằng cách chạy:

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

Dường như có điều gì đó đã làm xáo trộn quyền truy cập của tất cả các mô-đun nút toàn cầu.


2

Đối với tôi, sửa chữa là thêm dấu gạch chéo sau tên thư mục


1

Thực hiện gỡ cài đặt hoàn toàn, bao gồm xóa đường dẫn, v.v. và cài đặt lại đã giải quyết được vấn đề, tuy nhiên, vấn đề rất lạ.

Cách xóa hoàn toàn node.js khỏi Windows


Ngay từ đầu tôi đã không thích câu trả lời của bạn, nhưng tôi phải thú nhận rằng điều tương tự đã xảy ra với tôi. Việc tạo meteordự án mới --reactđã gây ra sự cố này nhưng việc xóa dự án và tạo lại dự án đó lại hoạt động (OS X).
Hola Soy Edu Feliz Navidad

1

Tôi đã gặp vấn đề này với nuốt nước bọt. Vấn đề là gulp đã thêm một phần phụ thuộc vào tệp nguồn của tôi và tôi nghĩ npm đã cố gắng mở nó:

{
  "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"
  }
}

Đảm bảo rằng không có tham chiếu lạ trong tệp package.json của bạn.


1

Kiểm tra để đảm bảo bạn đang chạy cài đặt npm từ thư mục thích hợp.

(Ví dụ: tệp package.json có thể là một thư mục bổ sung.)


1

Nếu sự cố của bạn liên quan đến trình đóng gói React Native. Thử đặt lại bộ nhớ cache với react-native start --reset-cache.


1

Trong trường hợp của tôi, tôi đã quên chuyển đường dẫn đầy đủ của một trong những tệp mà nó đang yêu cầu. Sau khi vượt qua đường dẫn đầy đủ của tệp đã hoạt động :)


1

Trong trường hợp của tôi, tôi đã phải đối mặt với vấn đề này trong khi cài đặt create-react-appMAC (Mojave OS)với lệnh sau:

sudo npm install create-react-app -g

và gặp lỗi như sau:

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'

Tôi đã đọc npm.community cố gắng cài đặt mà không có sudo:

npm install create-react-app -g

và nó thực sự giải quyết được vấn đề của tôi .. !!


1

Đảm bảo rằng node_modules (và root package.json của bạn) không chứa tham chiếu đến mô-đun "package.json" của npm. Xóa package.json FOLDER khỏi node_modules đã giải quyết được vấn đề cho tôi.


0

Tôi đã gặp sự cố tương tự khi thiết lập mã chương trình tạo sẵn. Nó đang đọc tệp bó.js của tôi dưới dạng một thư mục. Vì vậy, như đã nêu ở đây. EISDIR có nghĩa là thư mục chứ không phải tệp. Để khắc phục sự cố, tôi đã xóa tệp và chỉ tạo lại (ban đầu nó được tạo tự động). Nếu bạn không thể tìm thấy tệp (vì tệp bị ẩn), chỉ cần sử dụng thiết bị đầu cuối để tìm và xóa tệp đó.


0

Gặp sự cố tương tự cho đến khi tôi thử xóa thư mục .git. Nó đã làm việc. Tôi đoán loại vấn đề này có thể có nhiều nguyên nhân khác nhau.


0

Tôi gặp vấn đề tương tự. Có một thư mục được liên kết trong thư mục của tôi đang gây ra sự cố. tôi đã thêm thư mục đó vào danh sách bỏ qua và sau đó nó bắt đầu hoạt động tốt như mong đợi.


0

Tôi biết đây không phải là câu hỏi cụ thể về mãi mãi js .. nhưng google dẫn tôi đến đây vì vậy .. Đối với tôi nó đơn giản như một dấu gạch chéo kết thúc.

Tôi vừa thay đổi:

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

Đến:

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

Và lỗi đã biến mất


0

Đảm bảo kiểm tra phiên bản npm của bạn và có vấn đề với nó hay không. Tôi đang gặp vấn đề tương tự tại thời điểm đăng bài này và tôi phát hiện ra rằng phiên bản npm (6.5) của tôi đang gặp sự cố. Tôi đã phải gỡ cài đặt và cài đặt lại npm phiên bản 6.4.1 và sau đó mọi thứ bắt đầu hoạt động tốt trở lại.


0

Tôi có một liên kết biểu tượng bị hỏng đến node_modules trong một thư mục con


0

Trong trường hợp của tôi, các bước này đã giải quyết được vấn đề của tôi:

  1. npmquá trình chấm dứt(CTRL + C)
  2. xóa toàn bộ thư mục
  3. tạo mới
  4. chạy npmlại

0

Trong trường hợp của tôi, tôi đang sử dụng Windows 10 bằng tiếng Tây Ban Nha và phiên bản này kết hợp tên thư mục tiếng Anh và tiếng Tây Ban Nha. Vấn đề của tôi là thư mục máy tính để bàn có tên này cho một số lệnh và các lệnh escritoriokhác. Tôi tin rằng npm không thể giải quyết điều này. Giải pháp của tôi là chỉ cần thay đổi một thư mục khác bắt đầu từ C: \ khác với thư mục chính của tôi.


0

Tôi đã phải đối mặt với vấn đề tương tự. Tôi đặt cafile bằng lệnh:

npm config set cafile PATH_TO_CERTIFICATE

Tôi có thể giải quyết vấn đề này bằng cách xóa cài đặt và cài đặt tệp chứng chỉ strict-ssl = false.


0

Tôi đã khắc phục sự cố này bằng cách di chuyển thư mục của mình khỏi ổ exFAT không hỗ trợ liên kết tượng trưng.

Ổ đĩa exFat của tôi được chia sẻ giữa osx và phân vùng cửa sổ bootcamp nên khi tôi cố gắng sao chép và cài đặt npm, dự án của tôi không thành công nhưng không bao giờ giải thích rằng exFAT không hỗ trợ chức năng này.

Có những trình điều khiển ngoài đó mà bạn có thể cài đặt để thêm khả năng liên kết biểu tượng nhưng bạn sẽ phải thực hiện nhiều thao tác thiết lập theo cách thủ công so với việc chạy một tập lệnh npm đơn giản.


0

Đối với mac os: Nếu được cài đặt trực tiếp từ trang web nodejs, tệp npmrc sẽ được đặt trong / usr / local / etc / npmrc . Chỉ cần xóa cấu hình không xác định và sự cố này sẽ được khắc phục.



0

Trong trường hợp của tôi, các C:\Users\{user}\AppData\local\npmtệp đã bị ẩn, vì vậy tôi không thể tìm và xóa thư mục gặp sự cố. Đã đưa tôi NGÀY để nhận ra điều này!

Vì vậy, hãy kiểm tra kỹ để bỏ ẩn bất kỳ thư mục nào để bạn không bỏ lỡ chúng! Đây là liên kết để thực hiện việc này nếu bạn không biết cách thực hiện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.