如何在eslintrc中手动添加要解析的路径

时间:2017-01-20 18:09:42

标签: webpack eslint resolve

我的项目main中有一个文件夹,我正在像模块一样解析。例如import x from 'main/src'导入main/src/index.js。这是通过webpack的解析别名配置完成的。

我遇到的问题是通过eslint摆脱错误。我知道eslint提供了一个webpack resolve插件,但是,我一直无法让它工作。我怀疑是因为我在webpack 2上并在我的webpack配置文件中使用es6。

是否有手动方式来编写解决方案来解决我的问题?

我见过的唯一其他黑客工作是使用import/core-modules,但我必须列出子目录树main/src/barmain/src/foo中的每个文件夹。这不太理想。

7 个答案:

答案 0 :(得分:81)

我认为以下链接可以帮助您。 您可以使用config添加解析目录。

https://github.com/benmosher/eslint-plugin-import#resolvers

例如,如果您要解析src/,可以在.eslintrc上书写如下。

{
  "settings": {
    "import/resolver": {
      "node": {
        "paths": ["src"]
      }
    }
  }
}

然后ESLint从src目录解析。 您可以通过编写src/hoge/moge.js并且ESLint知道它来要求const moge = require('hoge/moge');

答案 1 :(得分:8)

看到这个问题太迟了。实际上,已经有一个名为eslint-import-resolver-alias的解析器,它使用以下设置实现此功能。

{
  settings: {
    'import/resolver': {
      'alias': [
        ['main/src', './main/src']
       ]
     }
  }
}

答案 2 :(得分:5)

我遇到了类似的问题:ESLint无法解析相对于我的"baseUrl": "src"中的指令tsconfig.json导入的模块。

设法解决了与标记为解决方案答案类似的问题,除了我必须添加扩展数组。因此,我在.eslintrc.js中添加了以下内容:

  settings: {
    'import/resolver': {
      node: {
        extensions: ['.js', '.jsx', '.ts', '.tsx'],
        paths: ['./src']
      }
    }
  },

希望这对某人有帮助。我的解决方案的来源实际上是package's npm page

答案 3 :(得分:4)

我的工作湿润 .eslintrc.js

  settings: {
    'import/resolver': {
      node: {
        paths: ['.'],
      },
    },
  },

tsconfig.json

{
  "compilerOptions": {
    ...
    "baseUrl": "./",
    ...
  },
}

答案 4 :(得分:2)

我在webpack上遇到了同样的问题。我安装了eslint-import-resolver-webpack并因此更新了.eslintrc

self.$router.replace(`patient/${encodeURIComponent(authUser.email)}`)

答案 5 :(得分:1)

对于我来说,当我尝试在其中导入react-native-svg包时,我在React中遇到了这样的错误。我这样做是因为我在React和React-Native中都使用了一个代码库。因此,对我来说,以下代码在.eslintrc中有效:

"import/no-unresolved": [
  2,
  {
    ignore: [
      'react-native-svg'
    ]
  }],

希望这对其他人有帮助

答案 6 :(得分:-1)

正如 Zip184 在上面的评论中所述 如果你有多个 webpack 配置,你必须指定配置的路径

"settings": {
  "import/resolver": {
    "webpack": {
      "config": "webpack.common.js"
    }
  }
}