Node.js 应用程序适用于工头,但不适用于 heroku。 404错误

标签 node.js angularjs heroku express foreman

我正在使用 Yeoman/bower/grunt 构建一个有 Angular 的应用程序。该应用程序在工头上完美运行。在我搜索堆栈上的类似问题时,大多数其他人只是忘记创建他们的 Procfile 或在运行该应用程序的 app.js 中有错误。但是我有这两个,我无法弄清楚它们有什么问题,这样工头工作而不是 heroku。当我部署到 heroku 并打开它时,我在日志中得到了这个:

2013-10-02T19:33:56.159151+00:00 heroku[api]: Deploy b417d22 by richardadavila@gmail.com
2013-10-02T19:33:56.202052+00:00 heroku[api]: Release v10 created by     richardadavila@gmail.com
2013-10-02T20:38:51.350572+00:00 heroku[web.1]: Idling
2013-10-02T20:38:57.626159+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2013-10-02T20:39:02.097317+00:00 heroku[web.1]: State changed from up to down
2013-10-02T20:39:02.079612+00:00 heroku[web.1]: Process exited with status 143
2013-10-02T22:00:00.360769+00:00 heroku[web.1]: Unidling
2013-10-02T22:00:00.361135+00:00 heroku[web.1]: State changed from down to starting
2013-10-02T22:00:04.049439+00:00 heroku[web.1]: Starting process with command `node app.js`
2013-10-02T22:00:06.128657+00:00 app[web.1]: server started 40741
2013-10-02T22:00:06.164522+00:00 heroku[web.1]: State changed from starting to up
2013-10-02T22:00:07.479644+00:00 heroku[router]: at=info method=GET path=/ host=rickydavila-kpopbetter-s.herokuapp.com fwd="71.144.19.194" dyno=web.1 connect=9ms service=30ms status=404 bytes=22

没有错误(我可能没有完全理解日志),它只是杀死了应用程序。

我的 Procfile 说:“node app.js”

我创建一个快速服务器来运行应用程序的 app.js 文件是:

var express = require('express');

var path = require('path');

var app = express();

app.configure(function(){
  'use strict';
  app.use(express.bodyParser());
  app.use(express.static(path.join(__dirname, 'dist')));
});

var port = process.env.PORT || 5000;

app.listen(port, function() {
    'use strict';
    console.log('server started '+port);
});

Grunt 将应用构建到我上面提到的 dist 文件夹中。上面有明显错误吗?当我打开 heroku 应用程序 url 时,页面显示:Cannot GET/

哦,我还缩放了测功机,因为其他一些问题未能做到。据我所知,我没有对端口进行硬编码。

最佳答案

想通了。始终检查您的 .gitignore 文件!我忘了从文件中删除 dist,它还没有提交或推送到 heroku。

关于Node.js 应用程序适用于工头,但不适用于 heroku。 404错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148618/

相关文章:

node.js - 如何将对象传递给 GET 请求?

javascript - 日期格式在 angularjs 中不起作用

javascript - karma 测试中的未知 vendor

bash - 以编程方式在 Heroku 中运行 bash 脚本文件

java - 部署到Heroku时如何使用OpenJDK 11?

node.js - 使用 Firebase 的 Node.js 网站是否应该有两个 package.json?

mysql - 错误 : Cannot enqueue Query after fatal error in mysql node

javascript - 带/不带尾部斜线的 Node.js 重定向

javascript - 应用程序配置中的 Angularjs Controller 名称与 ng-controller

ruby-on-rails - 使用 Heroku 实现 SendGrid