typescript-eslint config: .eslintrc ไฟล์ 'module' ไม่ได้กำหนดไว้

Aug 19 2020

ฉันกำลังตั้งค่าโครงการใหม่ตามที่อธิบายไว้ในเอกสารการเริ่มต้นtypescript-eslint อย่างไรก็ตามใน.eslintrc.jsไฟล์ของฉันฉันได้รับข้อผิดพลาด:

ไม่ได้กำหนด 'module'eslint (no-undef)

ตอนนี้ถ้าฉันลบออกeslint:recommendedจากการextendsกำหนดค่าข้อผิดพลาดนี้จะหายไป อย่างไรก็ตามกฎทั่วไปเช่นdebuggerหรือconst iAmUnused = trueไม่ถูกเลือกโดย ESLint ดังนั้นหากรู้สึกเหมือนตีตัวตุ่นเล็กน้อย

เหตุใดไฟล์ ESLint ของฉันจึงถูกเลือกเมื่ออยู่ในรูทของโปรเจ็กต์ของฉันเมื่อeslint:recommendedเปิดใช้งาน ฉันไม่ต้องการรวมไฟล์นี้ในของฉัน.eslintignoreเพราะเมื่อเรียกใช้eslintคำสั่งของฉันมันบอกว่าไฟล์นี้ถูกละเว้นโดยอัตโนมัติ แต่ไม่ใช่ 🤷‍♂️

ESLINTRC:

module.exports = {
  root: true,
  parser: '@typescript-eslint/parser',
  parserOptions: {
    project: '*/tsconfig.json',
  },
  settings: {
    react: {
      version: 'detect',
    },
  },
  plugins: ['@typescript-eslint', 'jest', 'react', 'react-hooks'],
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:jest/recommended',
    'plugin:prettier/recommended',
    'plugin:react/recommended',
    'plugin:react-hooks/recommended',
    'prettier',
    'prettier/@typescript-eslint',
  ],
  rules: {
    'no-unused-vars': 2,
  },
  env: {
    browser: true,
    es6: true,
    jest: true,
  },
  overrides: [
    {
      files: ['**/*.tsx'],
      rules: {
        'react/prop-types': 'off',
      },
    },
  ],
};

TSConfig:

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "declaration": true,
    "declarationDir": "build",
    "jsx": "react",
    "lib": ["es6", "dom", "es2016", "es2017"],
    "module": "esnext",
    "moduleResolution": "node",
    "noEmit": true,
    "resolveJsonModule": true,
    "rootDir": "./src",
    "rootDirs": ["./src"],
    "sourceMap": true,
    "strict": true,
    "target": "es5"
  },
  "include": ["./src"],
  "exclude": ["node_modules", "build", "dist", "src/**/*.stories.tsx", "src/**/*.test.tsx"]
}

คำตอบ

6 PhilLucks Aug 21 2020 at 02:49

ดูเหมือนว่าenvจำเป็นต้องอัปเดตจาก:

env: {
    browser: true,
    es6: true,
    jest: true,
  },

ที่จะรวมnode: trueสำหรับmoduleข้อผิดพลาดที่จะได้รับการแก้ไข

BradZacher Aug 20 2020 at 12:51

https://eslint.org/docs/user-guide/configuring#specifying-environments

คุณต้องระบุสภาพแวดล้อมที่เกี่ยวข้องกับโครงการของคุณ

ในกรณีนี้คุณอาจต้องการเพิ่มcommonjsสภาพแวดล้อม

ฉันแค่จะพิจารณาปิดno-undefกฎเนื่องจากเป็นการตรวจสอบที่ TypeScript ครอบคลุมอยู่แล้ว