当本地Express服务器正常工作但在Heroku上崩溃时,可能有以下几个原因:
环境变量的问题:Heroku使用环境变量来配置应用程序,而本地服务器可能没有相同的配置。请确保在Heroku上设置了正确的环境变量。
端口号的问题:Heroku会为每个应用程序分配一个动态端口号。在本地服务器上,您可能在代码中指定了一个固定的端口号,但在Heroku上,您需要使用Heroku提供的动态端口号。您可以使用process.env.PORT
来获取Heroku分配的端口号。
下面是一个代码示例,展示了如何在Express应用程序中处理这些问题:
const express = require('express');
const app = express();
// 通过环境变量获取端口号
const port = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
在上面的代码中,我们使用process.env.PORT
来获取Heroku提供的动态端口号。如果在Heroku上运行应用程序,将使用Heroku提供的端口号,否则将使用本地的端口号3000。
确保在Heroku上设置了正确的环境变量,并使用动态端口号,应该能够解决本地服务器正常工作但Heroku上崩溃的问题。