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

在现有SvelteKit项目引入EdgeDB遇初始化错误求助

解决SvelteKit中EdgeDB初始化错误的方案

问题核心

执行edgedb project init后仍报错ClientConnectionError: Found 'edgedb.toml' but the project is not initialized,说明EdgeDB客户端未正确识别项目的初始化状态,大概率是初始化不完整、生成文件缺失或连接配置存在问题。

具体解决步骤

1. 重新初始化EdgeDB项目

强制重新执行初始化流程,确保数据库实例与项目完全绑定:

edgedb project init --reinit

执行过程中留意是否有实例创建、迁移执行的报错,若有根据提示修复(比如端口占用、权限问题)。

2. 生成EdgeQL-JS类型文件

SvelteKit别名指向的dbschema/edgeql-js是自动生成的类型文件目录,必须确保它存在:

edgedb generate edgeql-js

执行后检查dbschema目录下是否出现edgeql-js文件夹,若未生成,先执行edgedb upgrade升级CLI版本后再重试。

3. 显式配置客户端连接路径

默认的createClient()可能在SvelteKit服务器环境下无法自动定位项目根目录,显式指定项目路径:
修改lib/db/edgedb.ts:

import { createClient } from 'edgedb'

export const client = createClient({
  projectDir: process.cwd() // 指向项目根目录,确保读取到edgedb.toml
})

4. 验证EdgeDB实例状态

确保EdgeDB实例处于运行状态:

edgedb instance status

若实例未启动,执行:

edgedb instance start

5. 排查别名与导入问题

暂时替换SvelteKit别名,用相对路径导入测试,排除别名配置错误:
在routes/test/+page.server.ts中修改导入:

import e from '../../dbschema/edgeql-js';

若能正常导入,说明别名配置可能存在路径问题,重新检查svelte.config.ts中的别名路径是否正确。

额外提示

你的代码中selectPosts.run(client)未使用await,会导致异步查询未完成就返回响应,后续若需要返回查询结果,需修改为:

let posts = await selectPosts.run(client)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:58:09