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

求助:Turborepo Monorepo从Yarn转pnpm后Vite构建遇Rollup解析失败

解决方案
  • 开启pnpm依赖提升
    执行pnpm install --shamefully-hoist,或者在根目录.npmrc中添加shamefully-hoist=true后重新执行pnpm install。pnpm默认严格隔离依赖,部分第三方库的子依赖需要在顶层node_modules中才能被Rollup解析,开启该配置可解决这类问题。

  • 配置Vite预打包依赖
    在vite.config.mts中添加optimizeDeps.include,指定需要预打包的依赖,示例:

    import { defineConfig } from 'vite'
    import react from '@vitejs/plugin-react'
    
    export default defineConfig({
      plugins: [react()],
      optimizeDeps: {
        include: [
          'zustand',
          'use-sync-external-store/shim/with-selector.js',
          '@tanstack/react-query',
          '@tanstack/query-core',
          '@tanstack/query-persist-client-core'
        ]
      },
      // 其他原有配置...
    })
    

    让Vite预打包这些依赖,避免Rollup构建时出现解析失败。

  • 清理错误的external配置
    移除vite.config.mts中rollupOptions.external里添加的所有依赖项——这些是项目需要的内部依赖,不是外部资源,添加后反而会让Rollup跳过解析,导致找不到文件。

  • 统一依赖版本并清理缓存

    1. 执行pnpm dedupe统一依赖版本,减少嵌套层级冲突;
    2. 执行pnpm dlx turbo clean清理Turborepo缓存;
    3. 删除项目根目录下的node_modules/.vite文件夹清理Vite缓存;
    4. 重新执行pnpm install和构建命令。
  • 验证依赖树
    执行pnpm ls zustand @tanstack/react-query查看依赖树,确认报错的子依赖(如use-sync-external-store、@tanstack/query-core)是否存在,若缺失则手动安装对应版本的子依赖到app1目录(例如pnpm add use-sync-external-store -F app1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:53:26