Skip to content

nestjs 部署相对于普通接口来说需要指定配置,根据项目实际路径相应调整即可:

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

指的注意的是,vercel 的部署是无状态的,个人理解就是,每次访问部署的地址时,都会临时开辟一块区域给当前请求使用

一旦本次访问结束,该区域将被回收,与之关联的任何文件及数据都会被清理

举个栗子:

javascript
// /src/main.ts
// 在内存中定义一个变量,定时去新增内容
// 但是每次访问时,arr 都会被初始化,并在此次访问结束后被清空
const arr = []
setTimeout(() => {
    arr.push(1)
}, 1000)

基于这个特点,vervel 如果是部署服务,也只能做一些工具类的接口,无法实现持久化存储

哪怕是永远不重新部署服务,在内存中存数据都是做不到的,如果有这方便的需求,需要搭配第三方的服务去实现,例如远程数据库,静态资源存储等

另外在 vercel 环境下,是有一个临时目录 /temp 可以进行读写的,

但是同样的,任何在该目录下读写的文件,在本次访问结束后,也都会被清空,因此也只能临时使用

0