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

使用Vite运行React应用时ts-retry包解析失败求助

解决Vite中ts-retry包入口解析失败问题

问题原因

Vite的依赖预构建机制对package.json的入口配置(main/module/exports)校验比CRA更严格,ts-retry包的package.json大概率存在以下问题:

  • 缺失main/module/exports核心字段
  • 字段指向的文件路径不存在或错误
  • exports字段的条件配置不符合Vite的解析规则

解决步骤

1. 检查并修复ts-retry的package.json

进入项目的node_modules/ts-retry目录,打开package.json:

  • 确认main、module或exports字段是否存在
  • 验证字段指向的文件是否实际存在(比如main字段指向的dist/index.js是否真的在目录里)
  • 如果缺失或路径错误,临时修改该文件(注意:下次执行npm install会覆盖此修改,建议向ts-retry包作者提交修复PR)

示例修复(根据实际文件结构调整):

{
  "main": "dist/index.js",
  "module": "dist/index.mjs",
  "exports": {
    ".": {
      "require": "./dist/index.js",
      "import": "./dist/index.mjs"
    }
  }
}

2. 在Vite配置中强制指定ts-retry的入口

修改vite.config.js,通过别名或解析配置绕过自动解析问题:

import { defineConfig } from "vitest/config";
import react from "@vitejs/plugin-react";
import * as path from "path";

export default defineConfig({
  plugins: [react()],
  define: {
    global: {},
  },
  resolve: {
    alias: [
      { find: "@", replacement: path.resolve(__dirname, "src") },
      // 手动指定ts-retry的入口文件路径
      { find: "ts-retry", replacement: path.resolve(__dirname, "node_modules/ts-retry/dist/index.js") }
    ],
    dedupe: ["ts-retry"] // 避免重复依赖导致的解析冲突
  },
  optimizeDeps: {
    include: ["ts-retry"], // 强制Vite预构建该包
    esbuildOptions: {
      resolveExtensions: [".js", ".jsx", ".ts", ".tsx"]
    }
  },
  server: {
    port: 3000,
  },
});

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

执行以下命令重置依赖环境:

# 删除依赖目录和锁文件
rm -rf node_modules
rm package-lock.json
# 重新安装依赖
npm install
# 强制清除Vite缓存并启动项目
npm run dev -- --force

4. 调整ts-retry版本

如果当前版本的ts-retry存在配置缺陷,尝试安装其他兼容版本:

# 替换x.x.x为实际兼容的版本号
npm install ts-retry@x.x.x

内容的提问来源于stack exchange,提问作者Abdul Mueed Shahid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:00:24