首页 > 解决方案 > 如何使用 zeit now server 为 NodeJS 表单应用程序提供服务

问题描述

我正在 zeit now 服务器上运行一个简单的 nodejs 表单处理应用程序,并使用 now CLI 脚本进行部署。此 Node 应用程序虽然在所述端口号内的 localhost 上运行良好(例如:http://localhost:8081/myaction),但是在我用服务器替换 localhost 的 zeit 服务器上,相同的功能不适用于我NOW 构建脚本给出的 URL。

这是我的 now.json,我还提供对 git 存储库的访问权限,该存储库具有处理表单的节点服务器应用程序、发送电子邮件并在最后一步提供感谢页面。

节点服务器应用程序仓库:https ://github.com/jnsrikanth/node-form-server2

now.json 文件内容:

{
  "version": 2,
  "builds": [{ "src": "index.js", "use": "@now/node-server" }],
  "routes": [
    {
      "src": "/public/thank-you/dist/",
      "dest": "/index.html",
      "methods": ["GET"]
    },
    {
      "src": "/",
      "dest": "/index.js",
      "methods": ["POST"]
    }
  ]
}

package.json 和其余代码可以在存储库中找到。如果我能在这里找到一些指针,那就太好了。

另请注意,在我的表单中,我正在调用 action="https://zeit-url:8081/myaction" method="POST" 其中 8081 是 express 应用程序正在侦听以处理带有表单数据的 POST 方法的端口.

标签: node.jsexpressnodemailervercel

解决方案


我建议您将其转换now.json为 avercel.json并根据您提供的 github 存储库对其进行更新,如下所示:

"version": 2,
  "builds": [
    {
      "src": "index.js",
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/public/thank-you/dist/",
      "dest": "/public/index.html",
      "methods": ["GET"]
    },
    {
      "src": "/",
      "dest": "/index.js",
      "methods": ["POST"]
    }
  ]
  • 您需要验证此服务器在本地计算机上运行没有问题。
  • 由于您使用的是该选项,因此您需要通过从 部署文件或使用某些管道或 CI 操作builds vercel.json来确保将所有依赖项(例如node_modules等)上传到 vercel 。vercel-cli

推荐阅读