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

Next.js应用出现Mongoose TypeError: t.versions.node is undefined求助

Next.js应用报错TypeError: t.versions.node is undefined 解决方案

这个错误的核心原因是Mongoose被错误地在客户端代码中执行了。Mongoose是Node.js专属的MongoDB工具库,依赖Node.js环境的process对象,但浏览器/Next.js客户端环境没有这个对象,所以会触发process.versions.node(即报错里的t.versions.node)未定义的问题。

解决步骤

  • 排查客户端代码的Mongoose引入
    检查所有客户端组件(比如标注了"use client"的组件,或者App Router下默认的客户端组件),看是否直接/间接引入了Mongoose或依赖它的数据库操作代码。
    把所有数据库相关逻辑(模型定义、增删改查等)移到服务器组件或API路由中:

    • 服务器组件:在文件顶部添加"use server"(Next.js 13+ App Router)
    • API路由:放在pages/api/目录下(Pages Router)
      示例服务器组件写法:
    // app/components/ServerDBHandler.js
    "use server";
    import mongoose from 'mongoose';
    import User from '../models/User';
    
    export async function fetchUserList() {
      await mongoose.connect(process.env.MONGODB_URI);
      return User.find().lean();
    }
    

    客户端组件通过异步调用这个服务器函数获取数据,不要直接在客户端碰Mongoose。

  • 清理依赖并重新构建
    本地环境操作:

    # 删除依赖文件夹
    rm -rf node_modules
    # 清除npm缓存
    npm cache clean --force
    # 重新安装依赖
    npm install
    # 重新构建
    npm run build
    

    部署端(DeployBot)要确保部署流程会清理旧依赖缓存,重新安装依赖,避免用旧的缓存文件导致问题。

  • 锁定兼容的依赖版本
    查看GitHub提交记录,找到之前正常运行时的Mongoose版本,锁定该版本:

    npm install mongoose@x.x.x
    

    也可以尝试升级Mongoose到最新稳定版,确保和当前Next.js版本兼容:

    npm install mongoose@latest
    
  • 调试定位问题代码
    在疑似有问题的组件中添加日志,判断当前执行环境:

    console.log('当前环境是否存在process:', typeof process !== 'undefined');
    

    如果输出false,说明这段代码在客户端执行,不能调用Mongoose。同时对比GitHub最近的提交记录,找到哪次更新引入了客户端调用Mongoose的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:12:32