在我的
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
模式的唯一地方。
我通过将
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");