Heroku 不会加载 index.html

Posted

技术标签:

【中文标题】Heroku 不会加载 index.html【英文标题】:Heroku won't load index.html 【发布时间】:2015-01-20 05:53:55 【问题描述】:

我正在尝试使用 Heroku 创建一个 node.js 应用程序。在我的 server.js 文件中,我使用 express 加载静态 html 页面。这是我的 server.js 文件中的快速代码。在 Heroku 的 procfile 中,我将此设置为起点。

var app = require('express')();

var http = require('http').Server(app);

app.get('/', function(req, res)
  res.sendFile(__dirname + 'index.html');
);

但是当我将它推送到 Heroku 时,Heroku 没有显示任何内容,因此也没有错误。

server.js、index.html在同一个文件夹

【问题讨论】:

如果你添加console.log(__dirname)你在控制台得到什么? 控制台为空tap-to-race.herokuapp.com 这是“heroku 日志”pastebin.com/kMnewN1z的输出 它返回404 可能你的模板引擎不接受html ***.com/questions/11495595/… 顺便说一句,如果您使用的是express,为什么要添加require('http'),您已经通过调用express 调用了http 模块,这是一个简单的示例github.com/abdelouahabb/express-as-tornado 【参考方案1】:

这是你的整个server.js吗?如果是这样,您需要指定一个要监听的端口:

var app = require('express')();
var server = require('http').Server(app);
server.listen(80);

app.get('/', function (req, res) 
  res.sendfile(__dirname + '/index.html');
);
console.log('Express server started on port %s', server.address().port);

编辑:正如@Abdelouahab 建议的那样,您不应该对端口进行硬编码,而是从 process.env.PORT 中获取它

var port = process.env.PORT || 3000;
app.get('/', function (req, res) 
  res.sendfile(__dirname + '/index.html');
);
app.listen(port, function() 
  console.log("Node app is running at localhost:" + app.get('port'))
);

https://devcenter.heroku.com/articles/getting-started-with-nodejs#push-local-changes

Node.js port issue on Heroku cedar stack

【讨论】:

在 Heroku 中建议不要硬编码端口 app.set('port', process.env.PORT || 80) var server = app.listen(app.get('port'), function () console.log('working! on port ' + app.get('port')) )

以上是关于Heroku 不会加载 index.html的主要内容,如果未能解决你的问题,请参考以下文章

heroku 节点服务器不会运行

如何通过 https 和 heroku 上的 rails 服务云端资产?

Heroku 应用程序因 eslint 错误导入而崩溃

Heroku没有加载js脚本404

Ratyrate 星未在生产中加载(heroku)

Heroku,Java,Procfile,找不到或加载主类