eslint 在声明文件上抛出 import/no-unresolved 错误
eslint throwing import/no-unresolved error on declaration files
Eslint 抛出导入错误:import/no-unresolved 导入打字稿声明文件时。
我正在将 lerna 用于 monorepo。
相关报关文件导入。下面导入的文件是 app.d.ts 文件。
我可以在下面的配置中添加 "import/ignore": [".d.ts"] ,这解决了错误,但我正在寻找除此之外的解决方案。
// types
import { Theme } from '@typings/app';
我的 .eslintrc.js 配置文件:
module.exports = {
parser: "@typescript-eslint/parser",
extends: [
"airbnb",
"plugin:@typescript-eslint/recommended",
"prettier",
"prettier/react"
],
plugins: ["react", "jsx-a11y", "react-hooks", "sprinklr"],
env: {
browser: true,
node: true,
es6: true
},
globals: {
define: true,
require: true
},
rules: {
strict: [2, "never"],
"no-multi-spaces": 0,
"spaced-comment": 0,
"no-multi-assign": 0,
//Import rules
"import/extensions": [
2,
"ignorePackages",
{
js: "never",
jsx: "never",
mjs: "never",
ts: "never",
tsx: "never"
}
],
"import/no-unresolved": 2,
"import/no-extraneous-dependencies": 0,
"import/no-named-as-default-member": 0,
"import/prefer-default-export": 0,
//Keeping below till idea supports these codestyles
"object-curly-spacing": 0,
//ts related rules
"indent": 0,
"@typescript-eslint/indent": 0,
"@typescript-eslint/explicit-member-accessibility": 0,
"@typescript-eslint/camelcase": 0,
"import/no-webpack-loader-syntax": 0,
"@typescript-eslint/prefer-interface": 0,
"import/no-cycle": 1,
"react/prop-types": 0,
"@typescript-eslint/ban-ts-ignore": 1, //Remove after ts adoption increases
"@typescript-eslint/explicit-function-return-type": [1, {
"allowTypedFunctionExpressions": true
}],
"@typescript-eslint/no-this-alias": 0,
"sprinklr/no-logic-i18n-template-literal": 2,
},
parserOptions: {
sourceType: "module",
ecmaVersion: 6,
ecmaFeatures: {
globalReturn: true,
jsx: true
},
allowImportExportEverywhere: true
},
settings: {
"import/extensions": [".js", ".jsx", ".mjs", ".ts", ".tsx"],
"import/resolver": {
webpack: {
config: {
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'],
},
},
},
},
"react": {
version: "detect",
},
},
overrides: [
{
files: ["**/*.spec.*", "**/*.test.*", "**/*.d.ts"],
env: {
jest: true
},
globals: {
// Enzyme globals
mount: true,
shallow: true,
render: true
},
rules: {
"@typescript-eslint/no-var-requires": 0,
"@typescript-eslint/no-empty-function": 0,
}
}
]
};
您需要更多的打字稿配置。解决方法如图。
extends: [
"airbnb",
"plugin:import/typescript", // this is needed because airbnb uses eslint-plugin-import
"plugin:@typescript-eslint/recommended",
"prettier",
"prettier/@typescript-eslint", // not related to this problem but it helps
"prettier/react"
]
改善您的.eslintrc
...,
// parser: "@typescript-eslint/parser", -- not needed, "plugin:@typescript-eslint/recommended" has added
extends: [
"airbnb",
"plugin:import/typescript", // added
"plugin:@typescript-eslint/recommended",
"prettier",
"prettier/@typescript-eslint" // added
"prettier/react"
],
plugins: [
// "react", -- not needed, airbnb has covered
// "jsx-a11y", -- not needed, airbnb has covered
// "react-hooks", -- not needed, airbnb has covered
"sprinklr"
],
env: {
browser: true,
// node: true, -- not needed, airbnb has covered
// es6: true, -- not needed, airbnb has covered
amd: true // add define and require
},
globals: {
// define: true, -- not needed, use amd env
// require: true -- not needed, use amd env
},
...,
parserOptions: {
// sourceType: "module", -- not needed, airbnb has covered
// ecmaVersion: 6, -- not needed, airbnb has covered
// ecmaFeatures: { -- not needed, airbnb has covered
// globalReturn: true, -- not needed, airbnb has covered
// jsx: true -- not needed, airbnb has covered
// },
allowImportExportEverywhere: true
},
...,
settings: {
...,
// "react": { -- not needed, airbnb has covered
// version: "detect", -- not needed, airbnb has covered
// },
...,
},
此外,您可能需要查看“插件:import/typescript”在此处设置的内容:https://github.com/benmosher/eslint-plugin-import/blob/master/config/typescript.js
Eslint 抛出导入错误:import/no-unresolved 导入打字稿声明文件时。 我正在将 lerna 用于 monorepo。 相关报关文件导入。下面导入的文件是 app.d.ts 文件。
我可以在下面的配置中添加 "import/ignore": [".d.ts"] ,这解决了错误,但我正在寻找除此之外的解决方案。
// types
import { Theme } from '@typings/app';
我的 .eslintrc.js 配置文件:
module.exports = {
parser: "@typescript-eslint/parser",
extends: [
"airbnb",
"plugin:@typescript-eslint/recommended",
"prettier",
"prettier/react"
],
plugins: ["react", "jsx-a11y", "react-hooks", "sprinklr"],
env: {
browser: true,
node: true,
es6: true
},
globals: {
define: true,
require: true
},
rules: {
strict: [2, "never"],
"no-multi-spaces": 0,
"spaced-comment": 0,
"no-multi-assign": 0,
//Import rules
"import/extensions": [
2,
"ignorePackages",
{
js: "never",
jsx: "never",
mjs: "never",
ts: "never",
tsx: "never"
}
],
"import/no-unresolved": 2,
"import/no-extraneous-dependencies": 0,
"import/no-named-as-default-member": 0,
"import/prefer-default-export": 0,
//Keeping below till idea supports these codestyles
"object-curly-spacing": 0,
//ts related rules
"indent": 0,
"@typescript-eslint/indent": 0,
"@typescript-eslint/explicit-member-accessibility": 0,
"@typescript-eslint/camelcase": 0,
"import/no-webpack-loader-syntax": 0,
"@typescript-eslint/prefer-interface": 0,
"import/no-cycle": 1,
"react/prop-types": 0,
"@typescript-eslint/ban-ts-ignore": 1, //Remove after ts adoption increases
"@typescript-eslint/explicit-function-return-type": [1, {
"allowTypedFunctionExpressions": true
}],
"@typescript-eslint/no-this-alias": 0,
"sprinklr/no-logic-i18n-template-literal": 2,
},
parserOptions: {
sourceType: "module",
ecmaVersion: 6,
ecmaFeatures: {
globalReturn: true,
jsx: true
},
allowImportExportEverywhere: true
},
settings: {
"import/extensions": [".js", ".jsx", ".mjs", ".ts", ".tsx"],
"import/resolver": {
webpack: {
config: {
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'],
},
},
},
},
"react": {
version: "detect",
},
},
overrides: [
{
files: ["**/*.spec.*", "**/*.test.*", "**/*.d.ts"],
env: {
jest: true
},
globals: {
// Enzyme globals
mount: true,
shallow: true,
render: true
},
rules: {
"@typescript-eslint/no-var-requires": 0,
"@typescript-eslint/no-empty-function": 0,
}
}
]
};
您需要更多的打字稿配置。解决方法如图。
extends: [
"airbnb",
"plugin:import/typescript", // this is needed because airbnb uses eslint-plugin-import
"plugin:@typescript-eslint/recommended",
"prettier",
"prettier/@typescript-eslint", // not related to this problem but it helps
"prettier/react"
]
改善您的.eslintrc
...,
// parser: "@typescript-eslint/parser", -- not needed, "plugin:@typescript-eslint/recommended" has added
extends: [
"airbnb",
"plugin:import/typescript", // added
"plugin:@typescript-eslint/recommended",
"prettier",
"prettier/@typescript-eslint" // added
"prettier/react"
],
plugins: [
// "react", -- not needed, airbnb has covered
// "jsx-a11y", -- not needed, airbnb has covered
// "react-hooks", -- not needed, airbnb has covered
"sprinklr"
],
env: {
browser: true,
// node: true, -- not needed, airbnb has covered
// es6: true, -- not needed, airbnb has covered
amd: true // add define and require
},
globals: {
// define: true, -- not needed, use amd env
// require: true -- not needed, use amd env
},
...,
parserOptions: {
// sourceType: "module", -- not needed, airbnb has covered
// ecmaVersion: 6, -- not needed, airbnb has covered
// ecmaFeatures: { -- not needed, airbnb has covered
// globalReturn: true, -- not needed, airbnb has covered
// jsx: true -- not needed, airbnb has covered
// },
allowImportExportEverywhere: true
},
...,
settings: {
...,
// "react": { -- not needed, airbnb has covered
// version: "detect", -- not needed, airbnb has covered
// },
...,
},
此外,您可能需要查看“插件:import/typescript”在此处设置的内容:https://github.com/benmosher/eslint-plugin-import/blob/master/config/typescript.js