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

Monorepo中使用@typescript-eslint/utils遇模块查找错误求解决

解决Monorepo中@typescript-eslint/utils找不到模块的问题

问题分析

你遇到的核心矛盾是:直接导入@typescript-eslint/utils时TypeScript找不到模块/类型,强行导入./dist子路径又违反了包的exports规范导致运行报错。这本质是Monorepo下TypeScript模块解析策略不匹配、依赖安装不规范或版本不一致导致的。

解决方案

1. 修正TypeScript模块解析配置

@typescript-eslint/utils使用了Node.js的exports字段规范导出路径,要求TypeScript使用兼容的模块解析策略:

  • 修改子包packages/eslint-plugin-foo/tsconfig.json,确保moduleResolution设置为NodeNext或Node16:
    {
      "extends": "../../tsconfig.json",
      "compilerOptions": {
        "moduleResolution": "NodeNext",
        "module": "NodeNext", // 与moduleResolution匹配,确保ES模块解析正确
        "rootDir": "./src",
        "outDir": "./dist"
      },
      "include": ["src/**/*"]
    }
    
  • 根目录的tsconfig.json也需要同步设置moduleResolution为NodeNext或Node16,避免配置冲突。

2. 规范依赖安装与Monorepo链接

  • 确保@typescript-eslint/utils作为开发依赖正确安装在子包中,而非仅根目录:
    cd packages/eslint-plugin-foo
    npm install @typescript-eslint/utils --save-dev
    
  • 若使用pnpm/yarn workspace,删除子包的node_modules和锁文件,重新安装以确保依赖正确链接:
    rm -rf packages/eslint-plugin-foo/node_modules
    rm package-lock.json # 对应替换为pnpm-lock.yaml或yarn.lock
    npm install
    

3. 统一@typescript-eslint系列包版本

版本不匹配是类型找不到的常见原因,确保子包中所有@typescript-eslint相关包版本一致:

// packages/eslint-plugin-foo/package.json
"devDependencies": {
  "@typescript-eslint/eslint-plugin": "^6.0.0",
  "@typescript-eslint/parser": "^6.0.0",
  "@typescript-eslint/utils": "^6.0.0"
}

4. 恢复标准导入路径

不要直接导入./dist子路径,保持原导入语句即可:

import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';

只要上述配置修正完成,TypeScript就能通过正确的模块解析找到包的类型和代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:46:32