You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

monorepo场景下eslint-plugin-import未正常触发依赖缺失报错如何解决?

问题原因

你遇到的情况是monorepo场景下eslint-plugin-import的默认配置不会区分不同子包的依赖声明,只要根目录node_modules下存在对应的包(因为app1声明了is-even依赖,安装后会提升到根目录node_modules),就不会抛出依赖未声明的报错。

解决配置步骤

  1. 确保你安装了v2.25.0及以上版本的eslint-plugin-import,同时安装依赖解析器:
npm install eslint-import-resolver-node --save-dev
# 如果是yarn/pnpm的workspace场景,推荐额外安装
# npm install eslint-import-resolver-workspaces --save-dev
  1. 修改项目根目录的ESLint配置文件,新增如下规则和解析配置:
{
  "plugins": ["import"],
  "rules": {
    "import/no-extraneous-dependencies": [
      "error",
      {
        // 指定需要检查依赖的目录:根目录 + 所有子包目录
        "packageDir": [".", "./packages/*"]
      }
    ]
  },
  "settings": {
    "import/resolver": {
      "node": {
        // 仅检查当前目录下的node_modules,禁止向上查找父级node_modules
        "moduleDirectory": ["node_modules"]
      }
      // 用workspaces解析器的话替换上面的node配置为:
      // "workspaces": {}
    }
  }
}
  1. 重新运行ESLint校验,此时app2代码中引用is-even的位置就会抛出依赖未声明的错误,完全符合你的校验需求。

补充说明

如果你的项目有不需要发布的测试子包、或者测试文件允许引用devDependencies的依赖,可以给import/no-extraneous-dependencies规则增加devDependencies: ['**/*.test.js', 'packages/test-pkg/**/*']这类例外配置,避免误报。

内容的提问来源于stack exchange,提问作者Colin D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:54:00