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

运行mongoose的populate.js时报错:String不是Schema中name路径的有效类型

问题描述

项目链接:https://github.com/k4u5hik/node-express-course
我尝试使用populate.js,通过mongoose将products.json中的数据自动导入到我的MongoDB数据库,Schema定义在product.js文件中。

product.js代码

const mongoose = require('mongoose')

const productSchema = new mongoose.Schema({
  name: {
    type: String,
    required: [true, 'product price must be provided'],
  },
  price: {
    type: Number,
    required: [true, 'product price must be provided'],
  },
  featured: {
    type: Boolean,
    default: false,
  },
  rating: {
    type: Number,
    default: 4.5,
  },
  createdAt: {
    type: Date,
    default: Date.now(),
  },
  company: {
    type: String,
    enum: {
      values: ['ikea', 'liddy', 'caressa', 'marcos'],
      message: '{VALUE} is not supported',
    },
    // enum: ['ikea', 'liddy', 'caressa', 'marcos'],
  },
})

module.exports = mongoose.model('Product', productSchema)

populate.js代码

require ('dotenv').config()

const connectDB = require('./db/connect')
const Product = require('./models/product')

const jsonProducts = require('./products.json')

const start = async () => {
    try {
        await connectDB(process.env.MONGO_URI)
        await Product.deleteMany()
        await Product.create(jsonProducts)
        console.log('Products created or updated on database')
        process.exit(0)
    } catch (error) {
        console.log(error);
    }
}

start()

报错信息

kaushik@Madhuras-Air 04 - Practice % node populate
/Users/kaushik/WebstormProjects/node-express-course/04 - Practice/node_modules/mongoose/lib/schema.js:1044
    throw new TypeError(`Invalid schema configuration: \`${name}\` is not ` +
    ^

TypeError: Invalid schema configuration: `String` is not a valid type at path `name`. See bit.ly/mongoose-schematypes for a list of valid schema types.
    at Schema.interpretAsType (/Users/kaushik/WebstormProjects/node-express-course/04 - Practice/node_modules/mongoose/lib/schema.js:1044:11)
    at Schema.path (/Users/kaushik/WebstormProjects/node-express-course/04 - Practice/node_modules/mongoose/lib/schema.js:684:27)
    at Schema.add (/Users/kaushik/WebstormProjects/node-express-course/04 - Practice/node_modules/mongoose/lib/schema.js:536:14)
    at new Schema (/Users/kaushik/WebstormProjects/node-express-course/04 - Practice/node_modules/mongoose/lib/schema.js:132:10)
    at Object.<anonymous> (/Users/kaushik/WebstormProjects/node-express-course/04 - Practice/models/product.js:3:23)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/Users/kaushik/WebstormProjects/node-express-course/04 - Practice/populate.js:4:17)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)

已有排查情况

  • 导师本地运行代码无问题,排除代码逻辑错误
  • 已确认环境变量配置正确

解决方案

从报错栈可以判断,错误在加载product.js初始化Schema阶段就已触发,和数据库连接、JSON数据导入逻辑无关,按以下步骤排查即可:

  • 排查mongoose版本差异:执行npm list mongoose查看本地安装的mongoose版本,和导师使用的版本做对比。如果版本不一致,卸载本地版本后安装对应稳定版即可,例如执行npm install mongoose@6.10.0安装常用的稳定版本,避免使用测试版/预发布版触发兼容性问题。
  • 重装损坏的依赖包:本地依赖安装过程中可能出现文件损坏的情况,先删除node_modules目录和包锁文件:
    rm -rf node_modules package-lock.json yarn.lock
    
    再重新安装所有依赖:
    npm install
    
  • 排查代码中的不可见字符:如果是复制粘贴的代码,可能附带了零宽空格等不可见字符,导致Mongoose无法正确识别String等类型关键字。手动重写product.js中所有type: String、type: Number等字段定义行即可。
  • 验证mongoose引入有效性:在product.js首行引入mongoose后添加打印逻辑console.log(mongoose.Schema.Types.String),如果输出为undefined,说明mongoose引入异常,回到重装依赖步骤处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:45:01