簡體   English   中英

npm 命令 - 錯誤:EISDIR:對目錄的非法操作,請閱讀

[英]npm command - Error: EISDIR: illegal operation on a directory, read

在發出npm命令時,我收到一條錯誤消息,

Error: EISDIR: illegal operation on a directory, read
TypeError: Cannot read property 'get' of undefined

我在這方面經歷的SO帖子(沒有解決我的問題):

使用 Node.js 我得到“錯誤:EISDIR,讀取”

Node.JS readFileSync() function

我還嘗試編輯.npmrc文件以刪除ca條目,即使在此之后問題仍然存在。

有人可以幫忙嗎?

從個人經驗來看,根據你的報錯信息“ illegal operation on a directory ,我猜測是在執行npm時,無法訪問目錄或文件。

正如其他人所提到的,這通常是與存儲 npm 自定義配置的 .npmrc 文件(通常位於用戶的主目錄 ~/.npmrc 中)相關的錯誤。 需要注意的是,npm 可以有不同級別的配置:

  • 每個項目
  • 每個用戶
  • 全球的
  • 內置

您可以在npmrc 文檔頁面上閱讀 .npmrc 可能存在的不同位置,以及與 npm 配置文件相關的其他文檔。

如果您更喜歡調查問題的根源而不是僅僅刪除 .npmrc 文件,您可以通過在文本編輯器(VS Code、記事本等)中打開 .npmrc 或發出以下命令來實現:

npm config edit

在文本編輯器中打開 .npmrc 后,您可以開始查看您擁有的任何配置。 如果該文件為空或不存在,則您沒有任何配置(在該級別),您可以繼續調查其他級別的 .npmrc 配置或問題的其他來源。

同樣,如果您的 .npmrc 文件只包含以分號 (;) 開頭的文本行,那么您沒有活動配置,因為分號在 .npmrc 中充當注釋(非活動)行。 在某些情況下,例如如果您曾經運行過npm config list然后 npm 為您創建了一個示例 .npmrc 文件,其中包含要配置的可能設置列表,但所有這些設置都處於非活動狀態,因為它們前面有一個分號。 下面是運行npm config list時由 npm 生成的文件片段:

;;;;
; npm userconfig file
; this is a simple ini-formatted file
; lines that start with semi-colons are comments.
; read `npm help config` for help on the various options

;;;;
; all options with default values
;;;;
; access=null

; allow-same-version=false

一旦您確認您在 .npmrc 中具有活動的自定義配置,則此錯誤的可能原因可能是您擁有引用計算機上文件位置的任何自定義配置。 就我而言,我引用了 .npmrc 中 cacert 屬性的 ca 證書的不完整路徑:

損壞的配置:

; settings located in ~/.npmrc
cafile=C:/Users/kfrisbie/Documents/certs

請注意,上面的“certs”是對目錄的引用,其中 npm 期望對文件的引用,因此當我更新路徑以引用我在目錄中想要的文件時,npm 再次開始正常運行,沒有錯誤。

固定配置:

; settings located in ~/.npmrc
; note, I was missing the name of the file in the certs directory
cafile=C:/Users/kfrisbie/Documents/certs/trusted_certs.pem

我有同樣的問題,但經過大量研究,我能夠解決它。 首先嘗試在您的計算機中找到您的 npmrc 文件。 試試這個命令來定位.npmrc文件。

npm config ls -l | grep config

通常.npmrc位於/Users/USER_NAME 之后運行rm .npmrc 它會刪除節點用戶配置,但你應該沒問題。 希望這對你有幫助。

我遇到了同樣的問題,但在刪除“C:/Users/{username}/”目錄中的 .npmrc 文件后它得到了修復。

對我來說(白痴),問題是, package-lock.json某種程度上包含我的目錄package-lock.json文件...

刪除目錄並將文件放在它所屬的位置(在我的項目的根目錄下)修復了這個問題。

希望這對任何人都有幫助,這樣我就不會對自己感到難過了😇

嘗試卸載 yarn 並再次運行 npm install 命令。 如果有效,請安裝紗線新版本。

除了其他答案之外,它可能會返回錯誤錯誤:EISDIR,因為您可能已經命名了一個所謂的文件夾路徑,並帶有擴展名。

例如,您有一個名為 user 的文件夾,該文件夾內是 index.js,但是您將用戶文件夾拼錯為 user.js。

這可能發生在 Next.js 的 /pages 文件夾中用於動態呈現的文件夾結構中。 例如,在該文件夾中,您想為用戶創建一個路由。 那將是 http://localhost:3000/user。 雖然你認為你有這個文件夾結構/pages/user/index.js,但你錯誤地將用戶文件夾命名為user.js,所以文件夾路徑變成了/pages/user.js/index.js。 這實際上會返回本地主機返回錯誤:EISDIR:對目錄的非法操作,讀取

發生這種情況是因為您可能已命名 /user.js/index.js

原因是帶有 .js 擴展名的文件夾名稱拼寫錯誤

因此,要解決此問題,您只需將文件夾名稱重命名為用戶。 這只是一個例子,但確實可能發生。

查找並刪除.npmrc文件夾,通常位於C:/Users/<username>/.npmrc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM