typescript - ESlint import/no-unresolved with Babel plugin root import
问题描述
有谁可以解释一下,为什么 ESlint(VS Code,WebStorm)突出了这种导入变体?
import UserBlock from '~/templates/UserBlock'; //js file
.babelrc
"plugins": [
[
"babel-plugin-root-import",
{
"rootPathSuffix": "./src/",
"rootPathPrefix": "~/"
}
]
]
.eslintrc.js
module.exports = {
settings: {
'import/resolver': {
'babel-plugin-root-import': {
rootPathPrefix: '~',
rootPathSuffix: 'src',
},
},
},
};
解决方案
根据文档解决方案
根据我对“babel-plugin-root-import”插件的经验,您应该将配置更改为:
"plugins": [[
"babel-plugin-root-import",
{
"rootPathPrefix": "~"
"rootPathSuffix": "src",
}
]]
多余的斜线 ( /
) 和点 ( .
) 似乎使插件感到困惑。
但 ...
不幸的是,“babel-plugin-root-import”的 eslint 包目前没有得到很好的维护。根据您的 eslintrc,您似乎正在使用该eslint-import-resolver-babel-root-import
软件包,因此您“不要让 ESLint 被混淆”。如果您尚未安装该软件包,您可能想先尝试一下。
我目前正在尝试最近更新的“ eslint-import-resolver-babel-root-import-fixed ”分支。由于 NPM 命名冲突,它的配置略有不同;在您的 eslintrc 文件中,您需要替换babel-plugin-root-import
为eslint-import-resolver-babel-root-import-fixed
.
有效的解决方案
尽管如此,我还是无法让这些工作中的任何一个工作。使用 babel 编译时,没有问题,但是 eslint 会抛出你描述的错误。
过去几年我的解决方案是添加以下 eslint 规则:
"import/no-unresolved": [
"error",
{
"ignore": [
"^[~]",
]
}
]
另一种方法
我使用 是babel-plugin-root-import
因为我们有多个根前缀。如果您只需要一个,我建议您研究一下babel-plugin-module-resolver
,尽管这可能有其自身的一系列问题。我过去也使用过“Webpack Module Aliases”,尽管您可能无法使用它。
推荐阅读
- c# - 为什么我不能在我的 ViewModel 中声明的后端 C# 中填充数组?
- python - 如何在 python 中从时间序列数据创建监督学习数据集
- r - ggplot2 - 在两个变量的多面图中的点周围添加误差线?
- laravel - 调用刀片视图上的未定义变量
- asp.net - 以角度捕获路由参数值
- css - 如何使用 React Native Animate 将视图 flex 从 0 更改为 1
- r - R中的Fama MacBeth回归
- haskell - 理解一个涉及 Left、Right 和 case 语句的示例
- java - Py4JJavaError:调用 z:org.apache.spark.api.python.PythonRDD.collectAndServe 时出错。: java.lang.IllegalArgumentException
- r - 如何创建一个合并 2 个二分变量的新变量?