React无法识别Heroku的PORT环境变量的原因是因为React是一个前端框架,它主要用于构建用户界面,而Heroku是一个云平台,用于部署和运行应用程序。在Heroku上部署React应用时,需要使用后端服务器来提供React应用的静态文件。
Heroku的PORT环境变量是由Heroku平台提供的,用于指定应用程序监听的端口号。然而,React应用本身并不需要监听端口号,因为它是一个静态文件,由浏览器直接加载和渲染。因此,React应用无法识别Heroku的PORT环境变量。
要在Heroku上成功部署React应用,可以使用以下步骤:
server.js
的文件,用于创建一个简单的后端服务器。server.js
文件中,使用Express或其他后端框架来提供React应用的静态文件。可以使用以下代码:const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'build')));
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
const port = process.env.PORT || 3000; // 使用默认的3000端口,或者使用Heroku提供的环境变量
app.listen(port, function() {
console.log(`App is running on port ${port}`);
});
package.json
文件中添加一个start
脚本,用于启动后端服务器。可以使用以下代码:"scripts": {
"start": "node server.js"
}
buildpacks
为Node.js,并确保已启用dynos
来运行应用程序。通过以上步骤,React应用将能够成功部署到Heroku上,并能够正确识别Heroku的PORT环境变量。
领取专属 10元无门槛券
手把手带您无忧上云