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

在Vercel边缘函数中用Prisma连接Neon数据库遇语法错误求助

解决Vercel边缘函数中Prisma+Neon的Promise语法错误

1. 升级Prisma到兼容版本

必须使用Prisma 5.0及以上版本,旧版本对边缘运行时支持不足。执行以下命令:

npm install prisma@latest
npx prisma generate

2. 配置Prisma生成边缘兼容客户端

修改schema.prisma文件,开启驱动适配器预览特性:

generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["driverAdapters"]
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

执行npx prisma generate重新生成适配边缘环境的客户端。

3. 使用Prisma官方适配器配合Neon Edge Driver

不要直接使用Neon的无服务器驱动,改用Prisma官方适配的方案,更贴合边缘运行时:

先安装依赖:

npm install @prisma/adapter-neon @neondatabase/serverless

边缘函数代码示例:

import { PrismaClient } from '@prisma/client'
import { PrismaNeon } from '@prisma/adapter-neon'
import { neon } from '@neondatabase/serverless'

const connectionString = process.env.DATABASE_URL

const neonDb = neon(connectionString)
const adapter = new PrismaNeon(neonDb)
const prisma = new PrismaClient({ adapter })

export default async function handler(req) {
  const data = await prisma.yourModel.findMany()
  return new Response(JSON.stringify(data), { status: 200 })
}

4. 调整Vercel打包配置

如果报错依旧,修改vercel.json让Webpack正确处理边缘环境的依赖:

{
  "functions": {
    "app/api/**/*.js": {
      "runtime": "@vercel/node@3",
      "edge": true,
      "webpack": {
        "config": {
          "resolve": {
            "fallback": {
              "buffer": false,
              "crypto": false
            }
          }
        }
      }
    }
  }
}

5. 检查环境变量与运行时设置

  • 确认DATABASE_URL使用的是Neon提供的无服务器连接字符串(通常带有?sslmode=require参数)
  • 边缘函数必须选择Edge Runtime,不能使用Node.js Runtime

错误根源

这个Promise语法错误是因为旧版依赖(Prisma或Neon驱动)引用了Node.js专属的Promise实现,边缘运行时不支持该实现,导致Webpack打包后出现未识别的标识符。按上述配置适配边缘环境即可解决这个冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:05:06