Nodejs Nest 部署到 Vercel 的流程有大佬讲一下吗?

发布于 1周前 作者 wuwangju 来自 nodejs/Nestjs

我现在的情况是 我单独部署一个未集成数据库的情况下 部署到 vercel 可以正常访问 hello world

但是我集成了数据库以后 我用的 orm 工具无论是 prisma 还是 sequelize 都会没法正常去访问

我的疑惑点在于 vercel 可以去部署 nest+orm 的这种项目吗?

如果可以是我哪里配置的不对呢?


Nodejs Nest 部署到 Vercel 的流程有大佬讲一下吗?
19 回复

有没有一种可能是 next ?


自评一下,原来还真有 nestjs ,哈哈

prisma 肯定可以,请上错误信息


前端轮子太多了已经快分不清了。
Next.js 、Nuxt.js 、Nest.js 。
Next React 全栈框架,Nuxt 是 Vue 全栈,Nest 是后端框架。


<br>This Serverless Function has crashed.<br><br>Your connection is working correctly.<br><br>Vercel is working correctly.<br><br>500: INTERNAL_SERVER_ERROR<br>Code: FUNCTION_INVOCATION_FAILED<br>ID: hnd1::npz54-1717550365607-554473530ff7<br>
这是我的 vercel.json
<br>{<br> "builds": [<br> {<br> "src": "src/main.ts",<br> "use": "vercel/node"<br> }<br> ],<br> "routes": [<br> {<br> "src": "/(.*)",<br> "dest": "src/main.ts",<br> "methods": ["GET", "POST", "PUT", "DELETE"]<br> }<br> ]<br>}<br><br>

我连我服务器的 mysql 还是 vercel 的 pq 数据库 都可以,,,

我感觉和这个配置没关系把 这个无非也就是类似入口文件的 作用 ?

能详细讲解一下吗?我这边的情况是在我不使用 orm + 数据库的时候是正常的,但是使用以后就会出现上面的报错,我不太确定我部署 nest.js 的时候应该做哪些额外的配置或操作 /(ㄒoㄒ)/~~

这是我 ormconfig 配置
import { TypeOrmModuleOptions } from ‘@nestjs/typeorm’;

const VercelConfig: TypeOrmModuleOptions = {
type: ‘postgres’,
host: ‘ep-aged-waterfall-13013279-pooler.us-east-1.postgres.vercel-storage.com’,
port: 5432,
username: ‘xxx’,
password: ‘xxx’,
database: ‘xxx’,
ssl: { rejectUnauthorized: false }, // For local development, consider removing this in production
synchronize: true, // Automatically create database tables based on entities (set to false in production)
logging: process.env.NODE_ENV === ‘development’ ? true : [‘error’],
entities: [__dirname + ‘/**/*.entity{.ts,.js}’],
};

const MySqlLocalConfig: TypeOrmModuleOptions = {
type: ‘mysql’,
host: ‘xxx’,
port: 3306,
username: ‘root’,
password: ‘xxx’,
database: ‘xxx’,
synchronize: true,
retryDelay: 500,
retryAttempts: 10,
autoLoadEntities: true,
logging: process.env.NODE_ENV === ‘development’ ? true : [‘error’],
};

export { VercelConfig, MySqlLocalConfig };
具体我也不懂 哈哈哈
直接 app.module 就用了 TypeOrmModule.forRoot(MySqlLocalConfig)
然后 再 service 里直接整就完事了

你没有去配置 vercel.json 这些吗?

nestjs 可以用 railway 部署,vercel 主要针对 next.js 的

railway 现在没有免费额度了吧?我好难受 /(ㄒoㄒ)/~~

{
“builds”: [
{
“src”: “src/main.ts”,
“use”: “vercel/node”
}
],
“routes”: [
{ “src”: “/(.*)”, “dest”: “src/main.ts” }
]
}
就这一点 我感觉这个就是个纯入口文件的作用把 和数据库没关系

json<br>{<br> "$schema": "<a target="_blank" href="https://openapi.vercel.sh/vercel.json" rel="nofollow noopener">https://openapi.vercel.sh/vercel.json</a>",<br> "buildCommand": "pnpm build",<br> "installCommand": "pnpm install",<br> "outputDirectory": "packages/web/dist",<br> "builds": [<br> {<br> "src": "package.json",<br> "use": "@vercel/static-build",<br> "config": {<br> "zeroConfig": true,<br> "installCommand": "pnpm install",<br> "buildCommand": "pnpm build",<br> "outputDirectory": "packages/web/dist"<br> }<br> },<br> {<br> "src": "packages/server/src/main.ts",<br> "use": "@vercel/node"<br> }<br> ],<br> "rewrites": [<br> {<br> "source": "api/(.*)",<br> "destination": "packages/server/src/main.ts"<br> }<br> ]<br>}<br>

这是我之前的配置,可以跑 nestjs ,但是原生的 .node 模块我没搞明白怎么配置,后来还是换阿里云了

兄弟你仓库代码能给我看下不,或者给个联系方式具体请教一下你 我现在三个 orm 工具都用了一遍了 都是报错了 /(ㄒoㄒ)/~~

我也是初学者 按照我之前 angular 经验和 chatgpt 搞得 。。。

可能是我的数据库问题吧,我去排查一下吧,谢谢哥们回复了

对啊,一般服务器到你的数据库不能直连,你得配置什么白名单,如果是 aws 的话,还有安全规则

要将Node.js的Nest应用部署到Vercel,可以按照以下步骤进行:

  1. 项目准备

    • 确保Nest项目在本地可以正常运行。
    • 如果项目使用数据库或其他外部服务,请确保这些服务可以从公共网络访问。
  2. 配置Vercel

    • 在Nest项目根目录下创建vercel.json文件,配置如下:

      {
        "version": 2,
        "builds": [
          {
            "src": "dist/main.js",
            "use": "@vercel/node"
          }
        ],
        "routes": [
          {
            "src": "/(.*)",
            "dest": "dist/main.js",
            "methods": ["GET", "POST", "PUT", "DELETE", "PATCH"]
          }
        ]
      }
      
    • 确保tsconfig.json中的编译输出设置正确,指向dist/main.js

  3. 部署

    • 全局安装Vercel CLI:npm install -g vercel
    • 在项目目录中打开终端,运行vercel login登录Vercel账号(可以使用GitHub账号登录)。
    • 运行vercel命令进行部署,根据提示选择项目名称和代码目录。
  4. 关联GitHub(可选)

    • 将Nest项目上传到GitHub。
    • 在Vercel平台上新建项目,选择从GitHub导入,关联对应的Nest项目仓库。
  5. 访问服务

    • Vercel会默认分配一个临时域名,你可以通过该域名访问已部署的Nest服务。
    • 如果有个人域名,可以配置DNS解析后,在Vercel中绑定自定义域名。

这样,你就可以将Node.js的Nest应用成功部署到Vercel了。

回到顶部