Typescript eslint - 缺少文件扩展名“ts”导入/扩展

新手上路,请多包涵

我有一个使用 Typescript 制作的简单 Node/Express 应用程序。和 eslint 给我错误

Missing file extension "ts" for "./lib/env" import/extensions

这是我的 .eslintrc 文件

    {
  "extends": [
    "airbnb",
    "plugin:@typescript-eslint/recommended",
    "prettier",
    "prettier/react",
    "plugin:import/errors",
    "plugin:import/warnings",
    "plugin:import/typescript"
  ],
  "parser": "@typescript-eslint/parser",
  "plugins": ["@typescript-eslint", "prettier", "import"],
  "settings": {
    "import/extensions": [".js", ".jsx", ".ts", ".tsx"],
    "import/parsers": {
      "@typescript-eslint/parser": [".ts", ".tsx"]
    },
    "import/resolver": {
      "typescript": {
        "directory": "./tsconfig.json"
      },
      "node": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"]
      }
    }
  },
  "rules": {
    "@typescript-eslint/indent": [2, 2],
    "no-console": "off",
    "import/no-unresolved": [2, { "commonjs": true, "amd": true }],
    "import/named": 2,
    "import/namespace": 2,
    "import/default": 2,
    "import/export": 2
  }
}

我已经安装了 eslint-plugin-import & eslint-import-resolver-typescript。我不知道为什么,我得到了那个错误。

原文由 Nolat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

将以下代码添加到 rules

 "rules": {
   "import/extensions": [
      "error",
      "ignorePackages",
      {
        "js": "never",
        "jsx": "never",
        "ts": "never",
        "tsx": "never"
      }
   ]
}

airbnb ESLint 配置 导致问题。

原文由 superoryco 发布,翻译遵循 CC BY-SA 4.0 许可协议

我知道这已经晚了,但如果您要扩展 Airbnb 规则,您可以使用 eslint-config-airbnb-typescript 。请参阅项目页面以获取最新说明。以下是截至 2022 年 3 月的要点:

安装

npm install -D eslint-config-airbnb-typescript

ESLint 配置文件

使用 React - 在“airbnb”之后添加“airbnb-typescript”

 extends: [
  'airbnb',
+ 'airbnb-typescript'
]

没有 React - 在“airbnb-base”之后添加“airbnb-typescript/base”

 extends: [
  'airbnb-base',
+ 'airbnb-typescript/base'
]

parserOptions.project 设置为您的路径 tsconfig.json

 {
  extends: ['airbnb', 'airbnb-typescript'],
+ parserOptions: {
+   project: './tsconfig.json'
+ }
}


注意:在 2021 年 8 月之前,您还需要执行以下任务。 这些说明保留在这里仅供历史参考。您应该不再需要这样做了。

先卸载旧的再添加新的:

 # uninstall whichever one you're using
npm uninstall eslint-config-airbnb
npm uninstall eslint-config-airbnb-base

# install the typescript one
npm install -D eslint-config-airbnb-typescript

然后更新您的 ESlint 配置,从“扩展”部分删除旧的 Airbnb 并添加新的:

 extends: ["airbnb-typescript"]

原文由 Ryan Wheale 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题