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

SvelteKit部署Vercel失败:URL_INVALID格式错误求助

SvelteKit + Turso + Drizzle-ORM 部署Vercel触发URL_INVALID错误

问题详情

本地环境下,使用url: process.env.TURSO_URL!,配置数据库连接时,网站运行与构建均正常,但部署到Vercel时出现以下错误:

Error [LibsqlError]: URL_INVALID: The URL is not in a valid format
    at parseUri (file:///vercel/path0/node_modules/@libsql/core/lib-esm/uri.js:9:15)
    at expandConfig (file:///vercel/path0/node_modules/@libsql/core/lib-esm/config.js:34:17)
    at createClient (file:///vercel/path0/node_modules/@libsql/client/lib-esm/node.js:11:26)
    at file:///vercel/path0/.svelte-kit/output/server/chunks/db.js:26:16
    at ModuleJob.run (node:internal/modules/esm/module_job:222:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:323:24)
    at async Promise.all (index 2)
    at async analyse (file:///vercel/path0/node_modules/@sveltejs/kit/src/core/postbuild/analyse.js:66:16)
    at async MessagePort.<anonymous> (file:///vercel/path0/node_modules/@sveltejs/kit/src/utils/fork.js:22:16)
Emitted 'error' event on Worker instance at:
    at [kOnErrorMessage] (node:internal/worker:326:10)
    at [kOnMessage] (node:internal/worker:337:37)
    at MessagePort.<anonymous> (node:internal/worker:232:57)
    at [nodejs.internal.kHybridDispatch] (node:internal/event_target:826:20)
    at MessagePort.<anonymous> (node:internal/per_context/messageport:23:28) {
  code: 'URL_INVALID',
  rawCode: undefined,
  [cause]: undefined
}

已在Vercel后台上传.env文件,包含TURSO_URL和TURSO_AUTH_TOKEN变量。

相关代码

db.ts

import 'dotenv/config';
import { createClient } from '@libsql/client';
import { drizzle } from 'drizzle-orm/libsql';
import * as schema from './schema';

export const client = createClient({
    url: import.meta.env.TURSO_URL!,
    authToken: import.meta.env.TURSO_AUTH_TOKEN
});

export const db = drizzle(client, { schema });

drizzle.config.ts

import { Config } from 'drizzle-kit';
import 'dotenv/config';

export default {
    schema: './src/lib/db/schema.ts',
    out: './migrations',
    driver: "turso",
    dbCredentials: {
        url: process.env.TURSO_URL!,
        authToken: process.env.TURSO_AUTH_TOKEN
    }
} satisfies Config;

解决方案

1. 校验Vercel环境变量的正确性

  • 确认TURSO_URL格式为libsql://<数据库名>-<用户名>.turso.io,无多余空格、引号或换行。直接从Turso控制台复制完整URL,避免手动输入出错。
  • 检查Vercel环境变量是否设置为Production环境,确保部署时变量被正确加载。

2. 统一环境变量读取方式

SvelteKit服务器端代码中,改用process.env读取环境变量(Vercel的Node.js环境下更稳定),同时移除不必要的dotenv引入:
修改后的db.ts:

import { createClient } from '@libsql/client';
import { drizzle } from 'drizzle-orm/libsql';
import * as schema from './schema';

export const client = createClient({
    url: process.env.TURSO_URL!,
    authToken: process.env.TURSO_AUTH_TOKEN
});

export const db = drizzle(client, { schema });

3. 验证构建时环境变量注入情况

  • 在Vercel构建日志中搜索TURSO_URL,确认变量值是否正确。若为空或格式错误,重新配置变量后触发重新部署。
  • 可临时修改package.json的build脚本,添加打印命令验证:
    "scripts": {
      "build": "echo $TURSO_URL && vite build"
    }
    

4. 确保依赖版本兼容

检查@libsql/client和drizzle-kit的版本是否匹配,执行以下命令查看版本:

npm list @libsql/client drizzle-kit

若版本不兼容,升级到最新稳定版:

npm install @libsql/client@latest drizzle-kit@latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:14:55