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

Prisma客户端导出函数至Remix报错:createNote不是函数

解决Prisma客户端函数在Remix中无法识别的问题
  • 检查Prisma客户端的实例化与封装逻辑
    Prisma的标准用法是先初始化客户端实例,再通过实例调用模型方法,而非直接自定义导出函数(除非是你手动封装的逻辑):

    1. 确保你的Prisma客户端文件(如app/utils/prisma.server.ts)正确初始化并导出实例:
      import { PrismaClient } from '@prisma/client';
      
      let prisma: PrismaClient;
      
      if (process.env.NODE_ENV === 'production') {
        prisma = new PrismaClient();
      } else {
        if (!global.prisma) {
          global.prisma = new PrismaClient();
        }
        prisma = global.prisma;
      }
      
      export default prisma;
      
    2. 若你是手动封装createNote函数,要保证导出语法正确:
      // 在prisma封装文件中
      export const createNote = async (data: { title: string; content: string }) => {
        return prisma.note.create({ data });
      };
      
  • 验证导入路径与方式

    1. 在Remix的notes.tsx路由中,确认导入语句匹配导出方式:
      • 若导出的是默认prisma实例:import prisma from '~/utils/prisma.server',调用时用prisma.note.create()
      • 若导出的是自定义createNote函数:import { createNote } from '~/utils/prisma.server'
    2. 注意Prisma客户端仅能在服务器端运行,封装文件需以.server.ts后缀命名,避免被打包到客户端代码中。
  • 重新生成Prisma客户端
    执行npx prisma generate命令,确保Prisma根据你的schema文件生成了最新的客户端代码。如果schema有变更但未重新生成,会导致模型方法无法识别。同时可重启Remix开发服务器,确保代码编译生效。

  • 排查模块导出与类型问题

    1. 检查封装文件是否存在语法错误,比如导出语句是否写错(如默认导出用了命名导入,或反之)
    2. 若使用TypeScript,确认tsconfig.json的路径别名配置正确(如"~/*": ["app/*"]),并检查导入的函数是否有类型报错,若有则重新生成Prisma类型定义。
    3. 可在封装文件和路由文件中分别打印导出/导入的内容,定位是导出还是导入环节出现问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:55:56