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

Vite-Netlify项目安装Prisma后执行netlify dev报错求助

解决Vite-Netlify项目中Prisma生成后Serverless函数加载的EISDIR错误

问题分析

执行prisma generate后运行netlify dev出现EISDIR错误,本质是Netlify的Serverless函数加载器尝试读取node_modules/.prisma目录(而非文件),触发了"无法读取目录"的系统错误。默认情况下Prisma Client生成在node_modules/.prisma下,Netlify的依赖扫描逻辑会误将该目录当作文件处理,导致函数加载失败。

解决方案

1. 自定义Prisma Client生成路径

修改prisma/schema.prisma中的generator配置,将Client输出到项目内的非node_modules目录,避免Netlify误读:

generator client {
  provider = "prisma-client-js"
  output = "../prisma/client" // 输出到prisma/client目录,而非node_modules
}

执行npx prisma generate重新生成Client。

2. 调整Netlify函数中的Prisma导入路径

在你的Serverless函数文件中,使用新的Client路径导入:

// 示例:netlify-functions/register.js
import { PrismaClient } from '../../prisma/client'

const prisma = new PrismaClient()
// 后续业务逻辑...

3. 配置Build命令确保生成Prisma Client

Netlify部署时不会自动执行本地的prisma generate,需将该命令加入package.json的build脚本:

{
  "scripts": {
    "build": "prisma generate && vite build",
    "dev": "netlify dev"
  }
}

4. 清理缓存并重新安装

删除以下目录/文件,彻底清理缓存:

  • node_modules
  • .prisma
  • dist
    然后重新执行:
npm install
npx prisma generate
netlify dev

5. 验证Netlify环境变量

确保DATABASE_URL在开发和部署环境中都正确配置,可在netlify.toml中添加开发环境变量:

[build]
command = "npm run build"
publish = "dist"
functions = "netlify-functions/"

[context.dev.environment]
DATABASE_URL = "mysql://你的数据库账号:密码@localhost:3306/数据库名"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:20:08