如何在 Now.sh 上部署 Express 如何在 Now.sh 上部署 Express

2025-06-07

如何在 Now.sh 上部署 Express

如何在 Now.sh 上部署 Express

如何在 Now.sh 上部署 Express

在本文中,我将分享如何设置 Express API 端点以在Now.sh 2.0 版本上运行。您将获得免费的 https 端点并在无服务器环境中运行!是不是很酷?

您可以在github找到完整的源代码

先决条件

  • 现在 CLI(12.1.9)
  • 节点(v10.10.0)
  • 快递(4.16.4)

添加端点以表达

为了简单起见,我们将有 2 个端点来展示如何处理GETPOST请求。

/获取-获取

这将以VERSIONjson 输出形式返回。

编辑index.js

app.get("/get", (req, res, next) => {
    res.json({
        "version": process.env.VERSION
    });
});

/post——POST

回显正在发布的 JSON 内容。

编辑index.js

app.post('/post', function(request, response) {
    response.send(request.body);
});

将 Secret 存储为环境变量

您可能已经注意到我们在“/get”端点中使用了process.env.VERSION。这是一种常见的做法,即不在代码中硬编码机密。

设置环境变量

export VERSION="1.0"

部署到now.sh

设置构建now

我们需要设置build才能使用@now/node-server。(使用@now/node不起作用)。修改now.json

"builds": [{
    "src": "index.js",
    "use": "@now/node-server"
}]

更多内容请阅读文档

将环境变量设置为 Secretnow.sh

now-linux secret add VERSION $VERSION

更多内容请阅读文档

允许 CORS

这里我们需要添加自定义响应头。修改now.json

"routes": [{
    "headers": {
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
        "Access-Control-Allow-Headers": "X-Requested-With, Content-Type, Accept"
    },
    "src": "/.*",
    "dest": "/index.js"
}]

更多内容请阅读文档

推至now.sh

now-linux

示例输出

❯ now-linux
> UPDATE AVAILABLE The latest version of Now CLI is 12.1.9
> Read more about how to update here: https://zeit.co/update-cli
> Changelog: https://github.com/zeit/now-cli/releases/tag/12.1.9
> Deploying ~/code/repo/github/express-now under XXXXXXX
> Synced 2 files (929B) [1s]
> https://express-now-3b57ke4d4.now.sh [v2] [in clipboard] [1s]
┌ index.js        Ready               [17s]
└── λ index.js (284.31KB) [sfo1]
> Success! Deployment ready [19s]

测试

启动本地服务器。

npm start

测试/get

在终端中,

curl http://localhost:3000/get

回复

{"version":"1.0"}

测试/post

在终端中,

curl -H "Content-Type: application/json" \
-d '{"message":"hello"}' \
http://localhost:3000/post

回复

{"message":"hello"}

注意:您可以localhost用 now.sh 实例 url 替换。

陷阱

或许由于无服务器的特性,端点有时会返回502错误。为了解决这个问题,请为服务调用者添加重试机制。

文章来源:https://dev.to/warenix/how-to-deploy-express-on-nowsh-414i
PREV
沙漠赛车🏜️:世界上第一款仅使用 CSS 的滑动感知游戏!
NEXT
使用 Puppeteer 将任何网页变成您的个人 API