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

我在尝试在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 。 我不知道它想要什么。 我的应用程序是使用Mozilla的SocialAPI的SocialProvider的testing平台。 该应用程序本身是从https://github.com/mixedpuppy/socialapi-demo演示的版本。 有几个bug被修复了,否则这个和这个demo是一样的(我用的是只修复了bug的repo)。 我有一个index.html页面,它安装了SocialProvider,在这个时候服务器端的应用程序踢了,并做了其余的魔术。 它在localhost上运行良好,但是当我推到Heroku时,它失败了。 git push没有问题报告(只是通常的“没有自述数据”的警告)。

我难以理解,因为我只是看不到它试图获得什么; 显然404错误表明缺less一个页面,但该应用程序不会调用任何HTML页面,并且所需的一切都存在(如我在localhost运行确认)。

我意识到,这不是很多,没有看到实际的应用程序,也不知道它正在做什么。 而没有实际的错误报告 – 只是一个404状态,显然可以是任何东西。 但是我现在很难受,所以如果有人有什么见解或者build议的话,我会很感激。

嗨我也有很多挫折,而部署应用程序。 为了部署你需要确定两件事情。

1)使用环境variables设置端口var port=Number(process.env.PORT || 3000);

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

该演示不是一个节点的应用程序,或至less不是打包的方式heroku喜欢它与Procfile和一切。 如果你有一个节点的应用程序,那么它将服务于静态文件,因为它的代码(或至less应该),但Heroku不是静态页面(如Apache或Nginx或其他)的标准Web服务器。 Heroku的构build是为了运行networking应用程序,它们本质上是自己的服务器。

如果你运行一个节点服务器,这个节点的快速入门节点应该会帮助你。 https://devcenter.heroku.com/articles/nodejs

我有一个类似的问题。 解决scheme如下简单:

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

 web: node index.js 

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

 heroku ps:scale web=1 

希望有所帮助!