在尝试在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状态,它显然可以是任何东西。但我现在很难过,所以如果有人有任何见解或建议,我会非常感激。
答案 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
希望有所帮助!