在Heroku上运行Node.js应用程序时出错

时间:2013-06-04 23:28:41

标签: node.js heroku get mozilla

在尝试在Heroku上运行一个简单的Node.js应用程序时,我遇到了令人沮丧的“错误”。 Heroku本身没有报告错误 - 应用程序已启动(未崩溃,未显示“Hxx”代码);我得到的是:

heroku[router]: at=info method=GET path=/index.html
host=realsheek.herokuapp.com fwd="24.63.82.165" dyno=web.1 connect=0ms
service=4ms status=404 bytes=33

当我从浏览器运行应用时,会显示Cannot GET。我不知道它正在尝试GET。我的应用程序是使用Mozilla的SocialAPIs的SocialProvider的测试平台。该应用程序本身是https://github.com/mixedpuppy/socialapi-demo演示的一个版本。修复了一些错误,否则这与此演示相同(我使用了repo,只修复了错误)。我有一个安装SocialProvider的index.html页面,此时服务器端应用程序启动并完成其余的魔法。它在localhost上正常运行,但当我将其推送到Heroku时,它会失败。 git push报告没有问题(只是通常的“无自述数据”警告)。

我很难过,因为我无法看到它想要获得的东西;显然404错误表示缺少页面,但应用程序不会调用任何HTML页面,并且所有需要的内容都存在(因为我在localhost上运行确认)。

我意识到这不是很多事情,没有看到实际的应用程序,也不知道它正在尝试做什么。并且没有实际的错误报告 - 只有404状态,它显然可以是任何东西。但我现在很难过,所以如果有人有任何见解或建议,我会非常感激。

3 个答案:

答案 0 :(得分:8)

嗨,我在部署应用程序时也遇到了很多挫败感。 为了部署,你需要确保两件事。

1)使用环境变量var port=Number(process.env.PORT || 3000);

设置端口

2)不要忘记将Procfile包含为web:node app.js(您的起始文件)

答案 1 :(得分:0)

该演示不是节点应用程序,或者至少没有像heroku喜欢的那样使用Procfile和所有东西打包。如果您有一个节点应用程序,那么它将根据它的代码(或至少它应该)服务静态文件,但heroku不是静态页面的标准Web服务器(如Apache或nginx或其他)。 Heroku旨在运行Web应用程序,这些应用程序本质上就是它们自己的服务器。

如果节点服务器正在运行,那么此节点的heroku快速入门应该可以帮助您。 https://devcenter.heroku.com/articles/nodejs

答案 2 :(得分:0)

我有类似的问题。解决方案很简单:

1)确保正确写入了Procfile。它应该看起来像:

web: node index.js

2)将代码推送到heroku后,尝试运行以下命令:

heroku ps:scale web=1

希望有所帮助!