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

Vue项目启动时ESLint检测node_modules中ts-toolbelt循环引用报错求助

解决Vue CLI项目中ts-toolbelt的MergeList循环引用错误

我来帮你排查这个困扰你的问题——运行npm run vue-cli-service serve --port 1024时node_modules里ts-toolbelt报4111:10 Type alias 'MergeList' circularly references itself的错误。这类问题大多和依赖版本不兼容、类型检查配置有关,下面是几个可以尝试的解决方案:

1. 升级/锁定ts-toolbelt版本

这个循环引用的问题在ts-toolbelt的旧版本里是已知的,你可以先检查当前项目里的ts-toolbelt版本:

npm list ts-toolbelt

如果版本较老,直接升级到最新稳定版:

npm install ts-toolbelt@latest --save-dev

如果ts-toolbelt是某个依赖的间接依赖,你可以在package.json里强制指定版本(npm需要借助npm-force-resolutions工具,yarn直接支持):
在package.json中添加:

"resolutions": {
  "ts-toolbelt": "^9.6.0"
}

然后重新安装依赖:

  • 对于npm:先全局安装工具npm install -g npm-force-resolutions,再执行npm-force-resolutions && npm install
  • 对于yarn:直接执行yarn install

2. 调整TypeScript配置

确保你的tsconfig.json没有对node_modules目录进行类型检查,检查exclude字段:

{
  "compilerOptions": {
    // 你的其他TypeScript配置
  },
  "exclude": ["node_modules", "dist"]
}

另外,也可以尝试让Vue CLI转译ts-toolbelt(通常不建议转译node_modules,但部分依赖需要),修改vue.config.js:

module.exports = {
    transpileDependencies: [
        'vuetify',
        'ts-toolbelt' // 添加这一行
    ],
    pwa: {
        workboxOptions: {
            skipWaiting: true,
        },
    },
};

3. 清理缓存并重新安装依赖

缓存或损坏的依赖文件也可能导致这类奇怪的错误,执行以下步骤:

# 删除依赖目录和锁文件
rm -rf node_modules package-lock.json
# 清理npm缓存
npm cache clean --force
# 重新安装依赖
npm install

之后再重新启动服务试试。

4. 排查ESLint配置影响

虽然你的.eslintrc已经排除了node_modules,但可以暂时调整配置来确认是否是ESLint触发的类型检查:

  • 暂时从extends里移除@vue/typescript,重新运行服务,如果报错消失,说明是ESLint的TypeScript规则和ts-toolbelt冲突,你可以尝试升级@vue/typescript-eslint相关插件版本,或者针对性关闭相关规则。

如果以上方法都无效,你可以尝试降级TypeScript版本——比如当前使用TypeScript 5.x的话,可能和旧版ts-toolbelt不兼容,降级到4.9.x版本试试:

npm install typescript@~4.9.0 --save-dev

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 06:42:55