next.js"> next.js"> 使用 Mongoose 与 Next.js
Next.js 是一个流行的框架,用于使用 React 构建全栈应用程序。Mongoose 可以直接与 Next.js 配合使用。如果你想开始使用,请使用 Next.js 的官方 Mongoose 示例应用程序。此外,如果你将 Next.js 与 Vercel 无服务器函数 一起使用,请查看 Mongoose 的 AWS Lambda 文档。
在使用 Next.js 时,有一些常见的错误需要注意。
TypeError: Cannot read properties of undefined (reading 'prototype')
你可以在你的 next.config.js
中添加以下内容来修复此问题
const nextConfig = {
experimental: {
esmExternals: "loose", // <-- add this
serverComponentsExternalPackages: ["mongoose"] // <-- and this
},
// and the following to enable top-level await support for Webpack
webpack: (config) => {
config.experiments = {
topLevelAwait: true
};
return config;
},
}
此问题是由 MongoDB 的 bson 解析器中的此更改 引起的。MongoDB 的 bson 解析器在 ESM 模式下使用顶层 await 和动态导入来避免一些 Webpack 打包问题。而 Next.js 强制使用 ESM 模式。
Next.js Edge 运行时
Mongoose 目前不支持 Next.js Edge 运行时。虽然你可以在 Edge 运行时导入 Mongoose,但你将获得 Mongoose 的浏览器库。Mongoose 在 Edge 运行时无法连接到 MongoDB,因为 Edge 运行时目前不支持 Node.js net
API,而 MongoDB Node 驱动程序使用该 API 连接到 MongoDB。