這篇文章也可以在我的部落格上找到:https://hamidreza.tech/nestjs-on-vercel。
如果您使用 Express 轉接器,本指南會很有幫助。對於使用 Fastify 適配器的 NestJS 應用程序,這些連結可能會有所幫助:
https://fastify.dev/docs/latest/Guides/Serverless/#vercel
https://github.com/vercel/examples/tree/main/starter/fastify
?您可以在此 GitHub 儲存庫中存取本文中討論的完整原始程式碼:https://github.com/mahdavipanah/nestjs-on-vercel
Vercel 對 Express 應用程式的支持
Vercel 提供了一項便捷的功能,用於透過以下方式部署 Express 應用程式:
在 API 中公開 Express 應用程式物件。
定義一個重寫規則,將所有傳入流量導向此單一 API。
我依照 Vercel 的官方 Express 部署指南部署 NestJS,方法類似地公開 NestJS 的底層 Express 應用程式物件。
第 1 步 - 建立一個 NestJS 應用程式
如果您已經設定了 NestJS 應用,請跳過此步驟。
安裝 NestJS 並建立一個新應用程式:
nest new my-app
第 2 步 - 安裝必要的 NPM 軟體包
npm install express @nestjs/platform-express npm install -D @types/express
步驟 3 - 建立 src/AppFactory.ts 文件
此檔案用作管理所有必要的 NestJS 應用程式引導的單一模組,並匯出 NestJS 應用程式及其底層 Express 應用程式物件。
在專案根目錄的 src 目錄中建立一個名為 AppFactory.ts 的檔案:
import { ExpressAdapter } from '@nestjs/platform-express'; import { NestFactory } from '@nestjs/core'; import express, { Request, Response } from 'express'; import { Express } from 'express'; import { INestApplication } from '@nestjs/common'; import { AppModule } from './app.module.js'; export class AppFactory { static create(): { appPromise: Promise<inestapplication>>; expressApp: Express; } { const expressApp = express(); const adapter = new ExpressAdapter(expressApp); const appPromise = NestFactory.create(AppModule, adapter); appPromise .then((app) => { // You can add all required app configurations here /** * Enable cross-origin resource sharing (CORS) to allow resources to be requested from another domain. * @see {@link https://docs.nestjs.com/security/cors} */ app.enableCors({ exposedHeaders: '*', }); app.init(); }) .catch((err) => { throw err; }); // IMPORTANT This express application-level middleware makes sure the NestJS app is fully initialized expressApp.use((req: Request, res: Response, next) => { appPromise .then(async (app) => { await app.init(); next(); }) .catch((err) => next(err)); }); return { appPromise, expressApp }; } } </inestapplication>
第 4 步 - 修改 src/main.ts 文件
預設情況下,NestJS 有一個 src/main.ts 檔案作為應用程式的入口點,包括所有配置和引導。修改此檔案以將所有內容移至 AppFactory.ts 檔案中,僅保留監聽方法的呼叫:
import { AppFactory } from './AppFactory.js'; async function bootstrap() { const { appPromise } = AppFactory.create(); const app = await appPromise; await app.listen(process.env.PORT ?? 3000); } bootstrap();
第 5 步 - 新增 api/index.ts 文件
預設情況下,Vercel 執行階段會建置專案的 /api 目錄中建立的任何函數並將其提供給 Vercel (doc)。由於 Vercel 理解並處理 Express 應用程式對象,因此在此目錄中建立一個導出 Express 應用程式物件的函數:
/** * This file exports Express instance for specifically for the deployment of the app on Vercel. */ import { AppFactory } from '../src/AppFactory.js'; export default AppFactory.create().expressApp;
第 6 步 - 新增 vercel.json 文件
在專案根目錄下建立一個名為 vercel.json 的檔案來設定 Vercel。在這裡,為 Vercel 定義一個重寫規則,以使用 Express 應用程式來服務所有傳入流量 (doc)。
您也可以使用 api 目錄中的 tsconfig.json 檔案來設定 Vercel 的 TypeScript 編譯器。除了 「路徑映射」 和 「Pr物件參考s」 之外,大多數選項均受支援。
nest new my-app
第 7 步 - 在 Vercel 上建立項目
恭喜? !我們快完成了。現在,建立一個 git 儲存庫並將原始程式碼推送到其中。然後,前往您的 Vercel 帳戶,建立一個新項目,並匯入 git 儲存庫。您也可以使用本文的範例 GitHub 儲存庫。
以上是Vercel 上快速、簡單的 NestJS 應用程式部署的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript開發工具