eslint解决在导入时使用配置了jsconfig.json的路径映射的错误

cbd*_*per 1 javascript eslint visual-studio-code vscode-settings eslintrc

这是我的项目结构:

-src

--assets
--components
--constants
--helpers
--pages
--routes

eslintrc.json
jsconfig.json
App.js
index.js

Run Code Online (Sandbox Code Playgroud)

我已经厌倦了:

import SomeComponent from '../../../../../components/SomeComponent';

我想做:

import SomeComponent from '@components/SomeComponent';

所以我在这里看到了这个问题:

VSCode Intellisense不适用于Webpack +别名

我可以使用它:

jsconfig.json

{
  "compilerOptions": {
    "baseUrl": ".",
    "target": "es6",
    "module": "commonjs",
    "paths": {
      "@components/*": ["./src/components/*"]
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,现在护送它抱怨的是它尚未解决,即使它可以很好地编译。

eslint错误:

无法解析模块'@components/SocialMedia'.eslint的路径(import / no-unresolved)

注意:

我不想禁用eslint。我也想让它理解这种路径。

cbd*_*per 15

我已经安装:

npm install -D eslint-import-resolver-alias

我添加到我的 eslint 配置文件中:

eslintrc.json

"settings": {
    "import/resolver" : {
      "alias" : {
        "map" : [
          ["@components","./src/components/"]
        ],
        "extensions": [".js"]
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

现在它可以工作了,eslint 不再显示错误了。

编辑:

我正在使用 webpack,我还需要做:

webpack.config.js

resolve: {
    alias: {
      '@components': path.resolve(__dirname, 'src/components/')
    }
  }
Run Code Online (Sandbox Code Playgroud)


iom*_*rio 5

假定您已eslint-plugin-import安装(在devDependencies中)的另一种方法。只需在.eslintrc.json文件中添加此“设置”即可。

.eslintrc.json

{
  "settings": {
    "import/resolver": {
      "node": {
        "moduleDirectory": ["node_modules", "src/"]
      }
    }
  }
}

Run Code Online (Sandbox Code Playgroud)

jsconfig.json

{
  "compilerOptions": {
    "baseUrl": "src"
  },
  "include": ["src"]
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以致电

import SomeComponent from 'components/SomeComponent';`
Run Code Online (Sandbox Code Playgroud)


Dav*_*ini 5

对于 lerna 用户:

eslintrc

{
  "settings": {
    "import/parsers": {
      "@typescript-eslint/parser": [".js", ".jsx", ".ts", ".tsx"]
    },
    "import/resolver": {
      "node": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"],
        // this resolves path alias import problems
        "moduleDirectory": [ "apps/*/src", "packages/*/src" ]
      },
      "typescript": {
        "alwaysTryTypes": true,
        // this resolves packages import problems
        "project": [
          "packages/*/tsconfig.json", 
          "apps/*/tsconfig.json"
        ]
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)