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的主要内容,如果未能解决你的问题,请参考以下文章