Vercel部署TanStack Start项目遇500错误:tslib依赖缺失如何解决?
解决Vercel SSR部署TanStack Start项目时的
tslib缺失问题 问题背景
将**TanStack Start(Vite + React 19)**项目部署到Vercel SSR环境时,生产站点返回500内部服务器错误,本地运行正常。Vercel日志报错:
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'tslib' imported from /var/task/_libs/supabase__auth-js.mjs
解决方案
方案1:配置Vite强制打包Supabase相关依赖(推荐)
在vite.config.ts中添加ssr.noExternal配置,让Vite把Supabase相关包完全纳入SSR打包范围,避免依赖解析遗漏:
import { defineConfig } from 'vite' import start from '@tanstack/react-start/vite' export default defineConfig({ plugins: [start()], ssr: { noExternal: ['@supabase/supabase-js', '@supabase/auth-js'], }, })
方案2:确认tslib为生产依赖
即使已安装tslib,也要确保它被标记为生产依赖:
- 执行命令:
npm install tslib --save - 检查
package.json,确保tslib在dependencies字段下(而非devDependencies) - 删除
node_modules和锁文件,重新安装后提交代码,清除Vercel缓存再部署
方案3:明确Vercel构建命令
在package.json中指定TanStack Start的官方构建命令,并同步到Vercel配置:
{ "scripts": { "build": "start build", "vercel-build": "start build" } }
在Vercel控制台的「构建设置」中,将构建命令设置为npm run vercel-build,确保使用正确的SSR构建流程。
问题根源
这是Vite SSR打包逻辑与Vercel Serverless环境的适配问题,而非Supabase兼容性问题:
- Vite默认会将部分第三方包标记为"外部依赖",不打包进SSR产物
@supabase/auth-js内部依赖tslib,但Vercel Serverless环境不会自动安装隐式依赖- TanStack Start的默认Vite配置未覆盖这类需要完整打包的第三方依赖
内容的提问来源于stack exchange,提问作者Dhruv Mangla
相关产品推荐
相关产品推荐

