部署至Deno Deploy时遇TypeError: Deno.readFileSync未定义问题求助
Deno Deploy部署报错及Prisma环境变量读取问题解决
问题描述
部署项目到Deno Deploy时出现以下错误:
TypeError: Deno.readFileSync is not a function at parseFile (https://deno.land/x/dotenv@v3.2.2/mod.ts:100:59) at config (https://deno.land/x/dotenv@v3.2.2/mod.ts:41:18) at file:///src/src/controllers/users/getUsers.ts:2:19
已在Deno Deploy项目设置中配置全部环境变量,但Prisma仍无法读取数据库源的环境变量。
解决步骤
弃用依赖文件系统的dotenv用法:Deno Deploy是无文件系统的边缘运行环境,不支持
Deno.readFileSync这类本地文件操作。直接使用Deno内置的环境变量API获取值:
替换原dotenv调用代码:// 原代码(会报错) import { config } from "https://deno.land/x/dotenv@v3.2.2/mod.ts"; const env = config();改为:
// 新代码 const DATABASE_URL = Deno.env.get("DATABASE_URL");确保Prisma适配Deno环境:
- Prisma Schema中直接引用环境变量,不依赖本地.env文件:
datasource db { provider = "postgresql" // 根据你的数据库类型调整 url = env("DATABASE_URL") } - 验证Deno Deploy项目设置里的
DATABASE_URL等环境变量拼写正确、值完整。 - 针对Deno环境生成Prisma客户端:
执行命令:
确保生成的客户端文件包含在部署包中。npx prisma generate --generator=client --runtime=deno
- Prisma Schema中直接引用环境变量,不依赖本地.env文件:
清理代码中的本地dotenv依赖:检查所有代码文件,移除任何调用dotenv读取本地文件的逻辑,避免部署时触发不支持的操作。
内容的提问来源于stack exchange,提问作者Mohamed Abdinasir
相关产品推荐
相关产品推荐

