首页 > 解决方案 > eslint 从子文件夹运行时无法解析相对模块路径

问题描述

当我从我的 repo 的根文件夹运行 eslint 时,一切运行正常,没有错误。

但是当我从一个子文件夹运行时,我会得到大量的导入/未解析,当我从 root 运行时不会发生这种情况:

/reporoot/subfolder0/subfolder1/MyFile.js
  11:8   error  Unable to resolve path to module 'foo'  import/no-unresolved
  11:8   error  Missing file extension for "foo"        import/extensions
  14:97  error  Unable to resolve path to module 'foo'  import/no-unresolved
  14:97  error  Missing file extension for "foo"        import/extensions

不管我怎么跑。例如:

这将起作用:

cd /reporoot
eslint .

所有这些命令都将失败,并出现如上所示的错误:

cd subfolder0
eslint .

或者

eslint subfolder0

或者

eslint /reporoot/subfolder0/subfolder1/MyFile.js

任何想法是什么问题,或者关于如何解决它的想法?

标签: javascripteslint

解决方案


根据此 GitHub 问题,这可能是您的导入中的绝对路径存在问题

尝试将其设置在您的.eslintrc.json(如果您不使用 JSON,则将其转换为任何其他文件类型)

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

如果上述方法不起作用并且您只想摆脱这些错误,只需添加以下内容:

"settings": {
    "import/no-unresolved": 0, // Turn off "Unable to resolve path to module ..." error
    "import/extensions": 0 // Turn off "Missing file extension for ..." error
}

无论如何,禁用它并不是什么大不了的事,因为 linter 因路径问题而闻名。


推荐阅读