ค้นหาเว็บไซต์

javascript - วิธีแก้ปัญหา "ไม่พบการกำหนดค่าสำหรับกฎ '@typescript-eslint/rule-name'"


ฉันพยายามที่จะเพิ่มการคอมไพล์ TypeScript ให้กับโปรเจค Javascript ที่มีอยู่แล้ว

เท่าที่ฉันทราบ สิ่งนี้ควรเป็นไปได้ (แม้กระทั่งง่าย) และคุณสามารถค่อยๆ แพร่กระจาย TypeScript ผ่านฐานโค้ดได้ โชคไม่ดี นี่ไม่ใช่สิ่งที่ฉันเห็น — หลังจากเพิ่ม TypeScript และพยายามเริ่มโปรเจกต์ ฉันได้รับข้อผิดพลาดนี้สำหรับทุกไฟล์ในโปรเจกต์:

Definition for rule '@typescript-eslint/rule-name' was not found

ไม่มีกรณีใดของสตริง rule-name อยู่ในซอร์สโค้ดของฉันเลย

นี่คือ tsconfig.json ของฉัน:

{
  "compilerOptions": {
    "baseUrl": "src",
    "noImplicitAny": false,
    "sourceMap": true,
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "strict": false,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "esModuleInterop": true,
    "jsx": "react",
    "skipLibCheck": true
  },
  "include": [
    "src",
    "types"
  ],
  "exclude": [
    "node_modules",
    "build"
  ]
}

ฉันได้ลองเพิ่ม "checkJs": false ลงในการตั้งค่าและรีสตาร์ท แต่ก็ไม่ได้เปลี่ยนอะไรเลย

ฉันไม่สามารถหาข้อมูลอะไรเกี่ยวกับปัญหา "rule-name" นี้ทางออนไลน์ได้จริงๆ ดูเหมือนว่านี่จะเป็นข้อความตัวอย่างประเภทหนึ่ง แต่ฉันก็ไม่สามารถหาที่มาของมันได้

มีใครพอจะเสนออะไรที่อาจช่วยให้ฉันสามารถสร้างโปรเจกต์นี้ได้บ้างไหม?

คำตอบ #1

ข้อผิดพลาดที่คุณพบเกิดจาก ESLint และหมายความว่าคุณมีกฎใน .eslintrc ของคุณซึ่งไม่มีอยู่ในปลั๊กอินใด ๆ ของคุณ สิ่งนี้อาจเกิดขึ้นหากคุณทำตามคู่มือการใช้งานสำหรับ @typescript-eslint/eslint-plugin แต่ไม่ได้แทนที่ตัวแทน rule-name ด้วยชื่อกฎจริงตามที่เห็นที่นี่ https://www.npmjs.com/package/@typescript-eslint/eslint-plugin

คำตอบ #2

สำหรับฉัน มันก็เพียงพอที่จะเพิ่ม plugin:@typescript-eslint/recommended ในไฟล์ .eslintrc

"extends": [
  ...<otherExtentions>...
  "plugin:@typescript-eslint/recommended"
]

คำตอบ #3

สำหรับผู้ที่ไม่ต้องการเพียงแค่ปิดการใช้งาน ESLint แต่ต้องการให้มันทำงาน การรัน npm update อาจแก้ปัญหาได้ ในกรณีของฉัน การอัปเดตเพียง @typescript-eslint/parser และ @typescript-eslint/eslint-plugin ไม่เพียงพอ แต่หลังจาก npm update คำเตือนก็หายไปและ ESLint ก็ทำงานได้ตามปกติ

ควรจำเอาไว้ด้วยว่าสิ่งนี้เป็นจุดเด่นจากผู้เขียนแพ็กเกจ:

เป็นสิ่งสำคัญที่คุณต้องใช้หมายเลขเวอร์ชันเดียวกันสำหรับ @typescript-eslint/parser และ @typescript-eslint/eslint-plugin

การตั้งค่าชุดแพ็กเกจอย่างละเอียดเพิ่มเติมบน npmjs

บทความที่เกี่ยวข้อง