Mongoose:在 vercel 上编译后无法覆盖模型

问题描述 投票:0回答:1

在我的

server.js

const userSchema = new mongoose.Schema(
    {
        email: { type: String, required: [true, "Email is required"] },
        password: { type: String, required: [true, "Password is required"] },
        phone: { type: String },
        orderhistory: [String],
        paymentinfo: {
            cardnumber: { type: String },
            CCV: { type: String },
            cardexpiry: { type: String },
        },
        listeditems: [String],
    },
    { collection: "Users" }
);
const User = mongoose.model("User", userSchema);

此代码在

localhost
上运行良好,但当我部署到 Vercel 时出现错误:

Connected to MongoDB database
OverwriteModelError: Cannot overwrite `User` model once compiled.
    at Mongoose.model (/var/task/node_modules/mongoose/lib/mongoose.js:563:13)
    at Object.<anonymous> (/var/task/server.js:38:23)
    at Module._compile (node:internal/modules/cjs/loader:1356:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1414:10)
    at Module.load (node:internal/modules/cjs/loader:1197:32)
    at Module._load (node:internal/modules/cjs/loader:1013:12)
    at exports.b (/var/task/___vc/__launcher/chunk-5UAC7W5H.js:1:1142)
    at /var/task/___vc/__launcher/bridge-server-BGIDXK2J.js:1:1443
    at Function.Re (/var/task/___vc/__launcher/bridge-server-BGIDXK2J.js:1:1809)
    at e.<computed>.L._load (/var/task/___vc/__launcher/bridge-server-BGIDXK2J.js:1:1413)
INIT_REPORT Init Duration: 1593.75 ms   Phase: invoke   Status: error   Error Type: Runtime.ExitError
Error: Runtime exited with error: exit status 1

这是我定义

User
模式的唯一地方。

node.js mongodb express mongoose vercel
1个回答
0
投票

我通过将

User
模式移动到它自己的路径中并导入它来解决这个问题。

user.js

var mongoose = require("mongoose");
var Schema = mongoose.Schema;

var userSchema = new Schema(
    {
        email: { type: String, required: [true, "Email is required"] },
        password: { type: String, required: [true, "Password is required"] },
        phone: { type: String },
        orderhistory: [String],
        paymentinfo: {
            cardnumber: { type: String },
            CCV: { type: String },
            cardexpiry: { type: String },
        },
        listeditems: [String],
    },
    { collection: "Users" }
);
module.exports = mongoose.model("User", userSchema);

并在

server.js
中添加
var User = require("./user.js");

© www.soinside.com 2019 - 2024. All rights reserved.