如何在 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 个端点来展示如何处理GET
和POST
请求。
/获取-获取
这将以VERSION
json 输出形式返回。
编辑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
错误。为了解决这个问题,请为服务调用者添加重试机制。