Heroku/Node.js - 路由错误导致内部服务器错误

3
我正在Heroku上运行一个Node.js/Express/MongoHQ应用程序。本地工作正常。当我推送到Heroku时,根路径'/'可以正常加载并成功访问MongoHQ数据库。但每个其他路由都给我显示“内部服务器错误”,而在Heroku日志中没有明显的错误信息。尽管如果我去/page/,我确实可以正确呈现我的应用程序的500页(很随机....)
你能想到有什么可能出错了吗?我一开始认为是数据库问题,但现在似乎是路由问题。我很乐意提供任何代码......虽然我会把一些日志粘贴在这里,但它对我来说几乎没有帮助。任何大佬有想法的话,非常感激。
谢谢。
日志(对于基本上除'/'之外的任何路由):
2011-10-07T17:27:03+00:00 app[web.1]: 10.94.69.43 - - [Fri, 07 Oct 2011 17:27:03 GMT] "GET /assets_js/lib/jquery.1.4.2.min.js HTTP/1.1" 304 - "<MYSITE>/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"
2011-10-07T17:27:03+00:00 heroku[router]: GET <MYSITE>/assets_js/lib/jquery.timeago.js dyno=web.1 queue=0 wait=0ms service=5ms status=304 bytes=0
2011-10-07T17:27:03+00:00 heroku[router]: GET <MYSITE>/assets_js/lib/jquery.1.4.2.min.js dyno=web.1 queue=0 wait=0ms service=7ms status=304 bytes=0
2011-10-07T17:27:03+00:00 heroku[router]: GET <MYSITE>/assets_js/lib/iscroll.js dyno=web.1 queue=0 wait=0ms service=3ms status=304 bytes=0
2011-10-07T17:27:03+00:00 heroku[router]: GET <MYSITE>/assets_css/viewer.css dyno=web.1 queue=0 wait=0ms service=3ms status=304 bytes=0
2011-10-07T17:27:03+00:00 heroku[router]: GET <MYSITE>/assets_js/utils.js dyno=web.1 queue=0 wait=0ms service=2ms status=304 bytes=0
2011-10-07T17:27:03+00:00 app[web.1]: 10.117.9.191 - - [Fri, 07 Oct 2011 17:27:03 GMT] "GET /assets_js/lib/iscroll.js HTTP/1.1" 304 - "<MYSITE>" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"
2011-10-07T17:27:03+00:00 app[web.1]: 10.117.11.66 - - [Fri, 07 Oct 2011 17:27:03 GMT] "GET /assets_css/viewer.css HTTP/1.1" 304 - "<MYSITE>" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"
2011-10-07T17:27:03+00:00 heroku[router]: GET <MYSITE>/assets_js/mediacreate.js dyno=web.1 queue=0 wait=0ms service=2ms status=304 bytes=0
2011-10-07T17:27:03+00:00 app[web.1]: 10.94.74.117 - - [Fri, 07 Oct 2011 17:27:03 GMT] "GET /assets_js/mediacreate.js HTTP/1.1" 304 - "<MYSITE>" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"
2011-10-07T17:27:03+00:00 heroku[router]: GET <MYSITE>/view_dashboard/activecard.js dyno=web.1 queue=0 wait=0ms service=3ms status=304 bytes=0
2011-10-07T17:27:03+00:00 app[web.1]: 10.84.93.33 - - [Fri, 07 Oct 2011 17:27:03 GMT] "GET /view_dashboard/activecard.js HTTP/1.1" 304 - "<MYSITE>" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"
2011-10-07T17:27:03+00:00 heroku[router]: GET <MYSITE>/view_dashboard/drawon.js dyno=web.1 queue=0 wait=0ms service=3ms status=304 bytes=0
2011-10-07T17:27:03+00:00 heroku[router]: GET <MYSITE>/assets_css/dashboard.css dyno=web.1 queue=0 wait=0ms service=3ms status=304 bytes=0
2011-10-07T17:27:03+00:00 app[web.1]: 10.64.155.131 - - [Fri, 07 Oct 2011 17:27:03 GMT] "GET /view_dashboard/dashboard.js HTTP/1.1" 304 - "<MYSITE>" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"
2011-10-07T17:27:03+00:00 heroku[router]: GET <MYSITE>/view_presentation/cards/cards.js dyno=web.1 queue=0 wait=0ms service=8ms status=304 bytes=0
2011-10-07T17:27:03+00:00 app[web.1]: 10.84.95.29 - - [Fri, 07 Oct 2011 17:27:03 GMT] "GET /view_presentation/cards/cards.js HTTP/1.1" 304 - "<MYSITE>" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"
2011-10-07T17:27:03+00:00 app[web.1]: 10.64.155.131 - - [Fri, 07 Oct 2011 17:27:03 GMT] "GET /view_presentation/cards/cards.css HTTP/1.1" 304 - "<MYSITE>" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"
2011-10-07T17:27:05+00:00 app[web.1]: 10.64.147.7 - - [Fri, 07 Oct 2011 17:27:05 GMT] "GET /assets_img/graph.gif HTTP/1.1" 304 - "<MYSITE>" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"
2011-10-07T17:27:05+00:00 heroku[router]: <MYSITE>/assets_img/graph.gif dyno=web.1 queue=0 wait=0ms service=6ms status=304 bytes=0
2011-10-07T17:27:05+00:00 app[web.1]: 10.84.95.29 - - [Fri, 07 Oct 2011 17:27:05 GMT] "GET /favicon.ico HTTP/1.1" 500 1682 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"
2011-10-07T17:27:05+00:00 heroku[router]: GET <MYSITE>/favicon.ico dyno=web.1 queue=0 wait=0ms service=5ms status=500 bytes=1682

看起来你的静态文件配置有误。你能否发布你的express配置的那一部分?如果你使用的是样板模板,应该像这样:app.use(express['static'](__dirname+'/public', {maxAge: 86400000})); - Joseph Yaduvanshi
好的,很酷,我希望你在这方面有所发现。这是我的当前静态目录 app.use(express.static(__dirname + '/public'));,然后我在其中有5个文件夹,如“assets_css、assets_js”等等。唯一让我不完全相信这可能是它的原因是当我转到'/'时,它似乎确实正确地拉取了所有这些文件。 - tuddy
问题似乎出在你的路由定义或server.js定义中(如何处理favicon.ico)。 你能发布一下吗? - theprogrammer
查看您的app.js文件会很有帮助。另外,为了确保,您是否已将所有模块依赖项添加到package.json文件中? - Justin Beckwith
2个回答

1

我能想到的几种可能性:

  • 你的 node.js 版本可能与 heroku 的版本不完全相同。运行 node --version 查找你的版本,然后添加类似以下内容到 package.json 以使 heroku 使用相同的版本:"engines": { "node": "0.6.14"}
  • 你在本地使用了某些依赖项的不同版本,而这些版本与 package.json 中指定的版本不同。运行 npm ls 查看本地版本,并在推送时注意 heroku 的日志以查看它下载的版本。
  • 你在本地有一些重要的文件未被检入:git status,如果有的话还要检查你的 .gitignore.slugignore 文件。
  • 可能是操作系统问题,我不确定是哪种类型,但我很确定 heroku 运行的是 Linux。 require('os').type()require('os').release() 可以为你提供一些信息。

0

我在部署到Heroku时遇到了类似的问题。结果是我的文件名损坏了代码,但本地没有出现这种情况。

例如,我有一个叫做createSession.hbs的视图。在我的路由(createSession.js)中,我执行的是

res.render('createsession', {...});

在本地环境中,大写字母'S'并不重要,但是在部署后,我遇到了“内部服务器错误”。

我的本地操作系统是Windows,而我在Heroku上部署(Ubuntu服务器)。

这是一个愚蠢而令人恼火的错误,因为它在本地能够正常工作,但希望它对某些人有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接