NodeJS 如何修复Vercel的NestJS部署错误?

esbemjvw  于 2022-12-03  发布在  Node.js
关注(0)|答案(3)|浏览(215)

这是一个很好的例子。

{
  "version": 2,
  "name": "nestjs-now",
  "builds": [
    {
      "src": "dist/main.js",
      "use": "@now/node"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "dist/main.js"
    }
  ]
}

我不知道是什么原因,也不知道如何修复。我只是按照vercel教程部署了我的nestjs后端项目,但没有工作。它包括GraphQL API和Rest API以及socket.io服务器。

rggaifut

rggaifut1#

为什么不工作?

Vercel上的无服务器函数(目前)不接受函数代码的构建步骤。因此,任何需要“构建步骤”来生成服务器的后端框架都将无法工作。

Vercel最适合做什么?

前端部署和无服务器函数作为助手。应在其他地方部署完整的API。您可以检查以下资源:

我有哪些选择?

我建议您使用Heroku或Digital Ocean作为替代方案。
2021年11月11日更新
现在,您可以将任何带有SSR、API路由和Edge Functions(即将)的框架部署到Vercel。只需确保遵循File System API规范即可。
您可以阅读介绍部分了解更多信息。请记住,Vercel是一个针对前端部署进行优化的平台。

vwkv1x7d

vwkv1x7d2#

问题是VERCEL在启动BUILD进程后立即查找DIST文件夹
您可以从.gitignore中删除DIST文件夹,这样就可以解决404
之后,无论何时进行新的部署,都必须强制部署而不使用缓存来再次编译您的dist

zzlelutf

zzlelutf3#

在您的生产 Jmeter 盘中,您会发现这个带有vercel function logs的按钮,在里面您可以找到您的应用程序出现故障的原因
但是,在我看来,崩溃的第一个错误是关于您的VERCEL.JSON文件:
当你在nestjs中构建一个无服务的应用程序时,你不会通过 dist/output/ 进行渲染,你必须从你的**src/**进行渲染,所以你的vercel.json必须如下所示:

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

您必须设置它with the documentation help调用您的API,就像它需要的那样。
下面的解决方案不适用于NESTJS/SWAGGER,因为它没有将SwaggerUIBundle发送到浏览器as in this image,但可以在here中找到相同问题的解决方案,只需使用C#中的swagger(如果是您的情况,您可以尝试将其调整为nestjs/swagger)
我打开这个是为了找到解决办法

相关问题