原文: How to Deploy Your Node.js Application for Free with Render
长久以来,Heroku都是托管全栈应用的优秀平台。freeCodeCamp早期大量使用Heroku,其他各式各样的开源项目也是如此。
但由于Heroku决定停止免费提供服务,这一现象可能会发生改变。
你可能已经收到了Heroku的邮件,通知你从2022年11月28日开始,在该平台托管应用不再免费,你可以购买付费计划。
如果你想免费托管静态页面或者web应用可以使用Netlify,具体操作可以查看这篇文章,但对于后端应用来说,并不存在太多如Heroku一样部署体验比较好的免费网站。
在这篇文章中,我们将学习如何使用Render来部署搭配Express服务器的Node.js应用。 它的部署过程和Heroku一样简单,并且免费。
让我们开始吧。
在部署应用之前需要做什么?
根据使用Heroku的经验来看,每一个应用都部署在一个由Heroku随机分配的端点,可以使用process.env.PORT
变量访问。
使用Render平台也是一样的。
所以你必须确保自己不是通过硬编码端点值来开启Express服务器,而是使用process.env.PORT
变量:
const express = require("express");
const app = express();
const PORT = process.env.PORT || 3030;
// 你的代码
app.listen(PORT, () => {
console.log(`server started on port ${PORT}`);
});
如何使用Render部署一个GitHub仓库
改好端点之后,就可以开始部署你的应用了。
我准备好了这个GitHub仓库来使用Render部署。这个GitHub仓库展示了一个排名前几位的仓库清单,以及每一个仓库获得的星星数量(以JSON的格式)。
让我们开始吧!
Render提供如下图各种注册方式:
一旦注册并登陆账号之后,你会看到控制面板:
点击Web Services
选项卡下的 New Web Service
按钮来部署Node.js应用。
你也可以通过点击网页头部你头像旁边的 New +
按钮来选择 Web Service
选择卡。
点击之后,会看到以下画面:
点击GitHub菜单下方的Connect account
按钮,会看到以下画面:
点击Configure
链接,就可以允许Render选取你所有或者选择的GitHub仓库。
我希望只访问选择的仓库,也就是我需要部署的。所以我选择Only select repositories
选项。
然后,点击在选择卡下方的Select repositories
按钮,选择你想要部署的仓库。
选择完毕后,你会看到如下画面:
点击绿色按钮Install
,使得Render有权访问你选择的仓库。
点击完毕后,你会被重定向到控制台,看到如下画面:
现在,点击Connect
按钮,看到如下画面:
在Name
框中,输入一个简短的名字来标识你的网站。
注意: 请保持Name
值的简单,因为部署完毕后,它将成为应用的URL。 所以如果我将github-repos
设置为Name
的值,我的应用URL会成为https://github-repos.onrender.com
。
所以请填写一个简单有意义的Name
值。
如图填写剩下的部分:
在Build Command
中填写yarn
就等同于yarn install
命令。Yarn是一个类似于npm的包管理工具,但是比npm要快。
如果你的入口文件是 index.js
,在Start Command
中填写node index.js
。
填写完所有细节之后,向下滚动页面,会看到Plans
区域,自动勾选的是免费计划。如果没有被勾选,请勾选好,因为我们的目的是免费部署应用。
再向下滑动页面会看到Advanced
按钮。
如果你的应用使用了环境变量,你可以在Advanced
设置中输入。也可以在这里添加 .env
文件,这样就不用你手动一个一个地添加。
注意Auto-Deploy
的默认值是Yes
——所以一旦你向GitHub仓库推送了更新,它们就会被自动部署到Render。
如果你并不想每次更改仓库的时候都自动部署,你可以在 Auto-Deploy
下拉菜单中选择No
。
现在,点击Create Web Service
按钮来开始部署过程。
部署可能需要等待一段时间,有时候如果页面卡在了“in progress”阶段,可以尝试刷新一下页面。
一旦部署完成,你可以看到如图,应用被部署,有一个Live
小标:
你可以点击在顶部的应用URL,在我的例子中,这个URL是https://github-repos.onrender.com/。
如果是首次部署应用,可能在访问网站的时候会遇到Page is not working
报错。
等待一段时间,并且使用Ctrl + R
或Cmd + R(Mac)
来刷新页面。因为免费服务的硬件有限,所以Render平台需要一些时间来启动一个项目。
部署成功后,可以如下图一样看到你的应用:
提示: 想要JSON有格式地显示,你需要安装Chrome插件:JSON Formatter。
你或许知道,在使用Heroku的免费账户的时候,没如果没有新的请求进来,你的应用会在30分钟后进入到休眠模式。也就是如果再次请求需要花上一点时间。
同样的,使用Render的话,如果没有新的请求,应用会在15分钟后进入休眠模式。
感谢阅读!
你可以在这个仓库中找到完整的源代码。
你可以在这里查看实时demo。
如果你想从零开始学Redux,并且完成三个应用,以及一个完整的食物点单应用,可以查看我的Mastering Redux课程。
在这篇课程中,你将学习:
- 基础和高阶的Redux
- 如何管理复杂的数据和对象状态
- 如何使用多个reducer来管理复杂的redux状态
- 如果排除Redux应用的错误
- 如果通过使用react-redux库来在React中使用Redux并使得你的应用是响应式的
- 如何使用redux-thunk库来处理异步API调用
- 使用Redux编写三个不同的app
以及更多。
最后我们将从零开始搭建一个食物点单应用 ,包括付费模块和应用的部署。
想要了解JavaScript、React或者Node.js最新的消息吗? 请在LinkedIn上关注我。