”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 Vercel 和 Supabase 部署 NestJS 应用程序

使用 Vercel 和 Supabase 部署 NestJS 应用程序

发布于2024-11-12
浏览:836

了解部署到 Vercel 非常简单,但是,在部署过程中需要考虑一些设置。

先决条件

  • NestJS项目在开发环境中与PostgreSQL本地连接并正常工作
  • 用于部署的 Vercel 帐户
  • Supabase 帐户(我们将在这里设置 PostgreSQL 数据库)

考虑到您的 NestJS 应用程序已准备好部署,让我们从 Supabase 设置开始。

苏帕基账户

Supabase 是一个开源 Firebase 替代方案,完全支持和无缝配置 PostgreSQL 数据库,并且它还提供其他功能,如身份验证、存储等。

在 Supabase 上设置一个新帐户并在该帐户中创建一个新项目。

Deploying NestJS Application using Vercel and Supabase

设置完成后,单击主页页面上的连接按钮。这将向您展示将数据库连接到项目的不同选项

Deploying NestJS Application using Vercel and Supabase

使用提供的凭据测试本地连接,以确保一切正常运行。

注意:确保凭据不会暴露并存储在您的 .env 文件中(我相信您已经知道这一点?)

接下来,让我们设置 Vercel 帐户并部署项目

韦尔塞尔

通常,Vercel 主要用于前端应用程序部署,但是,它也可用于部署后端项目。

PS: 如果您正在为后端部署开发中型到大型项目,请改用合适的服务提供商。

在您的 Vercel 帐户上,创建一个新项目并连接到您的 Git 存储库。导入您的 .env 文件并单击 Deploy 按钮。

Deploying NestJS Application using Vercel and Supabase

瞧,就是这样???。
...

可能遇到的常见问题

# 错误:没有名为“public”的输出目录

Deploying NestJS Application using Vercel and Supabase

这是一个常见错误,因为 Vercel 在构建过程中需要知道您的输出目录。要解决此问题,只需添加 versel.json 文件并复制以下内容:

{
  "version": 2,

  "builds": [
    {
      "src": "src/main.ts",
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "src/main.ts",
      "methods": ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"]
    }
  ]
} 

再次运行部署即可

...

# 错误:此无服务器函数已崩溃

Deploying NestJS Application using Vercel and Supabase

就我而言,这是因为找不到模块错误

Deploying NestJS Application using Vercel and Supabase

...
有几种方法可以解决这个问题:

方法1(用相对路径替换所有导入)


import { UsersService } from 'src/users/users.service';


import { UsersService } from '../users/users.service';

...

方法 2(修改 vercel.json 文件和 .gitignore 文件)

我最终采用了这种方法,因为我不需要将我的应用程序限制为仅使用相对路径导入。

所以,将vercel.json修改为这个

{
  "version": 2,

  "builds": [
    {
      "src": "dist/main.js",
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "dist/main.js",
      "methods": ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"]
    }
  ]
}

转到您的 .gitignore 文件并删除 /dist.

运行新部署即可。

编码愉快! ?

版本声明 本文转载于:https://dev.to/abayomijohn273/deploying-nestjs-application-using-vercel-and-supabase-3n7m?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 在具有共享字段的结构上实现相同的方法时如何避免代码重复?
    在具有共享字段的结构上实现相同的方法时如何避免代码重复?
    在具有相同字段的结构体中使用通用函数的最佳实践在两个结构体拥有相同字段的情况下,最好防止定义对这些字段进行操作的方法时出现代码重复。自定义类型作为方法接收器推荐的方法是引入一个自定义类型(例如,Version)作为方法接收器。由于所有自定义类型都可以用作方法接收器,因此此技术可以创建可应用于多个结构...
    编程 发布于2024-11-19
  • 如何在 Go 的 VSCode 调试模式下查看完整变量值?
    如何在 Go 的 VSCode 调试模式下查看完整变量值?
    揭开 VSCode 调试模式中的隐藏值在深入研究 Go 中调试的复杂性时,您可能会遇到长的令人沮丧的截断变量值。令人恼火的“... # more”后缀掩盖了这些值的全部范围,让您对它们的真实本质一无所知。不用担心,因为有一个隐藏的补救措施可以解决这个困境!关键在于通过 VSCode 中的“setti...
    编程 发布于2024-11-19
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-19
  • 为什么我的 PHP 脚本会在 Gmail 中发送带有“noname”附件的空白 HTML 电子邮件?
    为什么我的 PHP 脚本会在 Gmail 中发送带有“noname”附件的空白 HTML 电子邮件?
    使用 PHP 发送 HTML 电子邮件:解决空白电子邮件和附件问题您遇到的问题是 PHP 脚本发送带有空“的空白 HTML 电子邮件Gmail 中的“noname”附件。这可能表明您的电子邮件发送逻辑存在根本问题。解决方案:考虑 PHPMailer此问题的最佳解决方案是使用 PHPMailer 类。...
    编程 发布于2024-11-19
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1 和 $array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求...
    编程 发布于2024-11-19
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-19
  • PHP5 中的内联字符串和连接之间有显着的性能差异吗?
    PHP5 中的内联字符串和连接之间有显着的性能差异吗?
    性能比较:PHP5 中的内联字符串与连接在 PHP5 中处理文本数据时,开发人员可以选择使用内联字符串(例如,“这些是一些单词”)或执行串联操作(例如,“这些是”.$foo)。这就提出了一个问题:这些方法之间是否存在显着的性能差异。内联字符串与大括号封闭变量在 PHP5 的上下文中,有使用内联字符串...
    编程 发布于2024-11-19
  • 尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    解决 PHP 中的 POST 请求故障在提供的代码片段中:action=''而不是:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"检查 $_POST数组:表单提交后使用 var_dump 检查 $_POST 数...
    编程 发布于2024-11-19
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-19
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-19
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    编程 发布于2024-11-19
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-19
  • 我可以开车吗?编写酒精测试仪的代码
    我可以开车吗?编写酒精测试仪的代码
    在我居住的丹麦,不幸的是,我们在欧洲保持着一项记录:我们的孩子是欧洲大陆饮酒最多的人。正因为如此,人们非常关注减少青少年饮酒并教育孩子们了解酒精的影响。 我为当地学校编写了一个 HTML 和 JavaScript 酒精计算器,向学生展示酒精如何影响身体以及如何计算血液酒精含量 (BAC)。 ...
    编程 发布于2024-11-18
  • 为什么我的 Python MySQL 插入功能不起作用?
    为什么我的 Python MySQL 插入功能不起作用?
    Python MySQL 插入不起作用在 Python 中,利用 MySQL API 连接到 MySQL 数据库是一种流行的方法。但是,尝试将记录插入数据库时​​可能会出现困难。遇到的一个此类问题是无法插入记录。经检查,插入操作涉及的代码如下:db = MySQLdb.connect("l...
    编程 发布于2024-11-18
  • 修复“无法在模块外部使用导入语句”错误
    修复“无法在模块外部使用导入语句”错误
    作为 JavaScript 和 TypeScript 开发人员,我们在使用不同的模块系统时经常会遇到意外的错误。一个常见问题是“无法在模块外部使用 import 语句”错误。它通常在使用现代 ES 模块 (ESM) 或处理涉及 Webpack、Babel 或 Node.js 环境等捆绑程序的设置时出...
    编程 发布于2024-11-18

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3