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

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

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

了解部署到 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]删除
最新教程 更多>
  • \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    答案: 在大多数现代编译器中,while(1)和(1)和(;;)之间没有性能差异。编译器: perl: 1 输入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    编程 发布于2025-02-28
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-02-28
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在Java中的多个返回类型:一种误解类型:在Java编程中揭示,在Java编程中,Peculiar方法签名可能会出现,可能会出现,使开发人员陷入困境,使开发人员陷入困境。 getResult(string s); ,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但这确实是如此吗...
    编程 发布于2025-02-28
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-02-28
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-02-28
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月份)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将...
    编程 发布于2025-02-28
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python import codecs import codecs import codecs 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有...
    编程 发布于2025-02-28
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-02-28
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 但是,PHP工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地重新定义函数。 runkit_function_renction_re...
    编程 发布于2025-02-28
  • 版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    在时间戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源于遗留实现的关注,这些限制需要对当前的_timestamp功能进行特定的实现。 创建表`foo`( `Productid` int(10)unsigned not n...
    编程 发布于2025-02-28
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中可能会遇到一个冲突,其中3派对软件包将另一个带有导入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    编程 发布于2025-02-28
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。 Let's consider the following ...
    编程 发布于2025-02-28
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-02-28
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html posite:sticky; sticky; .Sticky-1 {[ top:1em; z-index:1; 1; { display:gr...
    编程 发布于2025-02-28

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

Copyright© 2022 湘ICP备2022001581号-3