- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个新网站,虽然我们在本地开发时一切正常,但当我们尝试在 Vercel 上部署时遇到了问题。该应用程序为页面和 API 使用 Sapper 框架,以及我们通过 Mongoose 访问的 MongoDB Atlas 中的数据库。我们在本地的行为是我们 npm run dev
并且建立了一个数据库连接,该连接一直持续到我们关闭应用程序。
但是,当它部署到 Vercel 时,建立数据库连接并打印“数据库连接成功”消息并且只应该运行一次的代码会在每个 API 请求上运行
这似乎很快就失控了,达到了我们数据库 500 个连接的限制:
结果,在网站被一个用户短暂使用后,我们的一些 API 请求开始失败并出现此错误(我们让 db 接受任何连接而不是 IP 白名单,因此错误给出的建议没有帮助) :
我们的实现是调用 mongoose.connect
在 .js 文件中:
mongoose.connect(DB, {
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false,
useUnifiedTopology: true
}).then(() => console.log("DB connection successful!")).catch(console.error);
然后我们
import
该文件在 Sapper 的
server.js
.我们能够找到的建议是“只缓存连接”,但这并没有成功,而且似乎更像是
node-mongodb-native
事物。无论如何,这是我们尝试过的方法,它在本地没有更好或更糟,但也没有解决 Vercel 上的问题:
let cachedDb = {};
exports.connection = async () => {
if (cachedDb.isConnected)
return;
try {
const db = await mongoose.connect(DB, {
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false,
useUnifiedTopology: true
});
cachedDb.isConnected = db.connections[0].readyState;
console.log("DB connection successful!");
return cachedDb;
} catch(error) {console.log("Couldn't connect to DB", error);}
那么......有没有一种方法可以在不更换至少一个部件的情况下完成这项工作?该网站尚未上线,因此更换某些内容并不是世界末日,但“仅更改设置”绝对比从头开始更受欢迎。
最佳答案
概括
Vercel 上的无服务器功能就像一个独立的过程一样工作。虽然可以“按功能”缓存连接,但将 serverful-ready 库部署到无服务器环境并不是一个好主意。以下是您需要回答的几个问题:
Frontend (Vercel - Serverless) --> Backend (Serverful - External provider) --> DB
免责声明:目前,我为 Vercel 工作。
关于mongodb - Vercel 为每个请求创建新的数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63208960/
我正在为计划部署到 Vercel 的项目做一些早期研究。我想知道以下是否可能: 我想在 GitHub 存储库上拥有。此存储库将使用 API token 和基本设置的环境变量。 我有我想要创建的项目的三
我使用Go创建了一个rest API,并使用githeb.com/tbxark/g4vercel将其部署到Vercel。。这是我的项目结构:。现在,在index.go文件中,我有以下代码:。但Verc
I am using Next 13 app dir.我正在使用Next 13应用程序目录。 I have a route.ts file:我有一个route.ts文件: app/api/c
部署到 Vercel 时出现以下错误: Module not found: Can't resolve 'fs' in '/vercel/2d531da8/node_modules/mysql/lib
部署到 Vercel 时出现以下错误: Module not found: Can't resolve 'fs' in '/vercel/2d531da8/node_modules/mysql/lib
我真的很喜欢在 Vercel 上部署应用程序。然而,我确实想知道人们应该如何处理不可避免地会创建的所有预览部署。 你应该自己删除它们吗?有没有办法在一定时间后自动删除预览部署? 最佳答案 无需删除预览
我正在开发一个新网站,虽然我们在本地开发时一切正常,但当我们尝试在 Vercel 上部署时遇到了问题。该应用程序为页面和 API 使用 Sapper 框架,以及我们通过 Mongoose 访问的 Mo
在遵循 Zeit 关于使用他们的 now CLI 的教程之后,我通过调用一个简单的“now”命令创建了一个子域,然后通过调用“now alias AUTOGENERATED_NAME MY_CUSTO
如何使用 Zeit now CLI 设置别名以便 www.mydomain.com 永久重定向到 mydomain.com? 我试过 now dns add mydomain.com www CNAM
我的 API 在另一个域下运行.. 我正在尝试使用 Vercel 配置代理.. 它正在向 /api/test.json 发出请求的应用程序所以我试图......在vercel配置上 "redirect
我正在使用带有静态站点生成功能的 Next.js。我想将增量静态再生添加到我的应用程序中并将其托管在云平台上。 是否可以在 Vercel 以外的其他平台(例如 Azure、AWS 等)上使用 ISR?
我已经在 github 的 vercel 上部署了 flutter 项目,但是部署后它显示: 404: NOT_FOUND Code: NOT_FOUND. Framework presets: Ot
我正在使用带有静态站点生成功能的 Next.js。我想将增量静态再生添加到我的应用程序中并将其托管在云平台上。 是否可以在 Vercel 以外的其他平台(例如 Azure、AWS 等)上使用 ISR?
我已经在 github 的 vercel 上部署了 flutter 项目,但是部署后它显示: 404: NOT_FOUND Code: NOT_FOUND. Framework presets: Ot
我在访问部署在 Vercel 上的环境变量时遇到问题。 在我笔记本电脑的 localhost 上测试站点时,它运行良好,但一旦部署到 Vercel 就无法运行。 我正在尝试访问我的 component
我在我的网站上运行 Vercel 编译,我无法摆脱导出时的预渲染错误。 有谁知道发生这种情况的原因并且可以帮助我吗? 我的 github 和所有代码:https://github.com/M0rill
我在 Next.js 项目中使用谷歌地图,一切都在本地工作。谷歌地图 key 存储在 next.config.js 中,我通过 process.env.NEXT_PUBLIC_GOOGLEMAPS 在
我有一个部署到 Vercel 的 nextjs 应用程序,并且我正在尝试将管理它的 Strapi cms 也部署到 Vercel,因为在同一服务上维护两者会更容易。 Strapi 存储库构建良好,一切
我想将我的 create-react-app 部署到 Vercel。 我在我的 now.json 中定义我的重定向,如下所示: { "redirects": [ { "source"
我发现我可以使用 Python 在 Next.js 中创建一个无服务器函数项目。一旦部署到 Vercel ,它将被转换为无服务器功能。 我浏览了文档并找到了 simple example输出日期: f
我是一名优秀的程序员,十分优秀!