簡體   English   中英

“沒有找到與模式“src”匹配的文件。” 使用“npx eslint src”或“npx eslint src/”時

[英]"No files matching the pattern "src" were found." when using "npx eslint src" or "npx eslint src/"

我剛剛用打字稿建立了一個 create-react-app 項目。 我已經用 npx eslint --init 添加了npx eslint --init 當我運行npx eslint src/npx eslint src時出現錯誤:

Oops! Something went wrong! :(

ESLint: 8.18.0

No files matching the pattern "src" were found.
Please check for typing mistakes in the pattern.

但是,如果我使用這個命令: npx eslint src/*那么它就可以工作。 這很好,但是我看到的一些指南和 stackoverflow 評論( 例如在這里)表明,對我不起作用的命令似乎對其他所有人都有效。 我究竟做錯了什么?

eslint.js

module.exports = {
  env: {
    browser: true,
    es2021: true,
    jest: true,
  },
  extends: ["plugin:react/recommended", "standard"],
  parser: "@typescript-eslint/parser",
  parserOptions: {
    ecmaFeatures: {
      jsx: true,
    },
    ecmaVersion: "latest",
    sourceType: "module",
  },
  plugins: ["react", "@typescript-eslint"],
  rules: {
    semi: "off",
    quotes: "off",
    "space-before-function-paren": "off",
  },
  ignorePatterns: ["**/*.css", "**/*.svg"],
};

package.json

 "dependencies": {
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^13.0.0",
    "@testing-library/user-event": "^13.2.1",
    "@types/jest": "^27.0.1",
    "@types/node": "^16.7.13",
    "@types/react": "^18.0.0",
    "@types/react-dom": "^18.0.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
    "typescript": "^4.4.2",
    "web-vitals": "^2.1.0"
  },
    "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^5.30.0",
    "@typescript-eslint/parser": "^5.30.0",
    "eslint": "^8.0.1",
    "eslint-config-standard": "^17.0.0",
    "eslint-plugin-import": "^2.25.2",
    "eslint-plugin-n": "^15.0.0",
    "eslint-plugin-promise": "^6.0.0",
    "eslint-plugin-react": "^7.30.1"
  },

好吧,我留下的評論不正確。 這個問題讓我了解了 ESLint,它是如何工作的,以及npm / npx命令有何不同。

所以這里是交易

注意: “我使用語法$(pwd)來引用當前工作目錄,因為它不是路徑的偽表示,而是一個這樣包裝的命令,它可以通過以下方式解釋和運行BASH外殼。”

在評論中,我寫了 eslint 解析路徑,以及它無法推斷CLI傳遞的參數src的含義,如以下代碼片段所示:

  /* COMMAND-1 */

  $ eslint src

回想起來,這是一個非常愚蠢的評論,我不應該說。 它不聰明的原因是,當您使用以下內容時,解析路徑的方式會完全改變:

  /* COMMAND-2 */

  $ npx eslint src

並排查看這兩個命令是有幫助的,因為它允許我們進行並排比較,但是,由於這兩個命令有很大的不同,因此實際上沒有太多可比較的地方。

因此,第一個命令COMMAND-1將 src 解析為路徑,但是COMMAND-2執行npx內部命令,因此 npx 中的“X”與執行...相同

npm execnpm x

換句話說,如下; npx eslint src也可以使用npm x eslint srcnpm exec eslint src

因此,如上所述,**參數src不是系統file-path ,而是一個內部 ESLint 命令,它提供了一個可愛的小 CLI 打印輸出您的錯誤。 它實際上很酷


最初命令對我也不起作用

我遇到的問題,看起來和你遇到的問題一樣。

解決方案非常簡單。
  1. 將 NPM 更新到最新版本。
  2. 將 NPX 更新到最新版本。 (更多內容如下)
  3. 將 Node.js 更新到最新版本
  4. 更新 ESLint 到最新版本
  5. 更新所有項目的 pkg,然后使用 fix 命令審核它們(更多內容見下文)。

所以 NPM 帶有嵌入其中的 NPX 命令,從技術上講, npxnpm命令,只是作為npm xnpm exec 從您的文件系統的角度來看,(換句話說,從/usr/bin/...的上下文中查看命令)它們是兩個不同的命令。

所以我對 ubuntu 了解很多,因為它是我 7 年的操作系統。 大約一年前,我切換到Fedora 36: Workstation ,很高興我做到了。 由於與安裝 Node.js 和 NPM 相關的問題,我進行了更改。 Ubuntu讓它變得困難。 我首先使用 Linux 的原因是因為軟件在適合運行軟件的環境中運行,而不適合保護與軟件相關的專有許可證。 總之,長話短說……升級NPX最好的方法(就是升級NPM,也就是升級Node.js),就是安裝最新版本的Node.js,進入目錄,並在/usr/bin目錄中為npmnode 、 npx 創建符號鏈接,然后將npx (全局)升級到v8.18.0版本。 您可能還需要為 ESLint 創建符號鏈接。




最后一點,只是為了指出一些事情。 你注意到你的 ESLint 版本你的package.json文件是v8.18.0嗎? 你得到的錯誤版本是v8.1.0嗎?

那是因為您的本地和全球 eslint 安裝是不同版本的 eslint。 您應該嘗試始終使所有內容保持相同的版本。

現在您的系統正在嘗試執行npx eslint src ,就好像src是一條路徑一樣,但是一切都已更新,您應該擁有所需的軟件,以便 eslint 和 npm 知道它是您嘗試執行的 ESLint 命令,而不是路徑.

我認為你應該在 tsconfig.ts 文件中有這個屬性:

"baseUrl": "."

暫無
暫無

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

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