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

Mongoose创建Product模型报错:Cannot read properties of undefined (reading 'Product')

解决MongoDB Product模型报错:TypeError: Cannot read properties of undefined (reading 'Product')

问题分析

报错指向mongoose.models.Product,说明mongoose.models为undefined,通常是mongoose未完成连接、模型初始化时机不对,或是API使用方式有误导致。

解决方案

1. 改用导入的models对象

你已经从mongoose导入了models,直接使用该对象代替mongoose.models即可,这是更可靠的方式:

import mongoose, { Schema, models } from "mongoose";

const productSchema = new Schema(
    {
        title: String,
        description: String,
        stock: Number,
    },
    {
        timestamps: true, 
    }
);
// 替换为导入的models对象
const Product = models.Product || mongoose.model('Product', productSchema);

export default Product;

2. 确保mongoose先完成连接

在你的项目入口文件(如server.js/app.js)中,必须先执行mongoose连接逻辑,再导入或使用任何模型:

import mongoose from 'mongoose';
import express from 'express';
const app = express();

// 先连接数据库
await mongoose.connect(process.env.MONGODB_URI);
console.log('MongoDB连接成功');

// 再导入路由/模型
import productRoutes from './routes/productRoutes.js';
app.use('/api/products', productRoutes);

3. 检查并更新mongoose版本

部分旧版本mongoose存在mongoose.models初始化延迟的问题,执行以下命令更新到最新稳定版:

npm install mongoose@latest

4. 排查循环依赖

检查是否存在模型与路由/其他模块互相导入的情况,循环依赖会导致模型未被正确初始化。比如避免在Product模型中导入使用它的路由,反之亦然。

错误截图

error page

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:05:59