在将Yeoman应用程序部署到Heroku 后,我收到以下错误
得到http://myapp.herokuapp.com/favicon.ico503(服务不可用)
我有一个最喜欢的图片,随着最喜欢的图像的出现,本地一切都很好。我不知道如何修复这个错误,也不知道为什么会首先导致这个错误。
以下是我的所有代码:https://github.com/dkretsch12/MyHerokuApp
我用以下命令将其推送到Heroku:
git-add
gitcommit-am"仍然被卡住">
gitpush-heroku主
我也遇到过这种情况,对我来说,"503(服务不可用)"错误并不是真正的错误。尝试:heroku logs --app [your-app-name]
看看它是否能给你更多的信息。
在我的案例中,Heroku正在寻找npm启动脚本,我没有指定,但Heroku需要它。看看你的package.json,我发现你也没有,所以这可能是开始的地方。
编辑
我认为这个错误的根本原因是,默认情况下,Heroku希望一个Web服务器或某种可执行文件在后台运行。之所以需要它,是因为否则将无法处理传入的请求。因此,它必须由程序员提供,安装后Heroku将通过npm start
或Procfile中指定的方式运行它。
我的情况是,我无论如何都需要一个网络服务器,所以我只创建了一个server.js模块,在那里我实现了一个小型的express应用程序。然后在package.json中我指定了:
"scripts": {
"start": "node server.js",
...
},
但这可能不是适合你的解决方案,这取决于你想要的应用程序。我对Grunt或Angular一无所知,所以我在那里帮不了你。我确实发现了这个问题,可能对你有价值。我还建议阅读Heroku开发中心上的文档
在尝试打开Heroku部署的Rails/React应用程序时,我遇到了同样的503服务不可用错误favicon.ico。我被这个bug卡住了至少一个小时,我想这篇文章可能会让我了解如何解决503收藏夹问题。
第1步:我试图在rails应用程序中找到一个favicon.ico文件,尝试创建自己的favicon.ico文件,并将所述文件放在根目录和其他目录中。我也犯了同样的错误。。。
步骤2。我在终端中运行了以下内容:heroku logs -t
,向上滚动,发现实际错误是Heroku无法支持gem sqlite3
。
An error occurred while installing sqlite3 (1.3.13), and Bundler cannot
remote: continue.
remote: Make sure that `gem install sqlite3 -v '1.3.13'` succeeds before bundling.
remote:
remote: In Gemfile:
remote: sqlite3
remote: !
remote: ! Failed to install gems via Bundler.
remote: ! Detected sqlite3 gem which is not supported on Heroku:
remote: ! https://devcenter.heroku.com/articles/sqlite3
关于原因的更多信息在这里。
步骤3:在了解了更多信息后,我发现我可以按照heroku文档来了解如何将sqlite3与heroku一起使用,也可以更改DB。我选择将DB更改为postgres,我发现了两个惊人的资源来帮助实现这一点:
如何在部署到heroku之前将rails应用程序数据库从sqlite更改为postgresql。在新的Rails项目中从SQLite更改为PostgreSQL
第4步:这样做之后,我得到了一个500内部服务器错误,再次转到heroku logs -t
,发现我的表在heroku上不存在。从那时起,我知道我必须使用以下命令将rails DB迁移到heroku:heroku run bundle exec rails:db migrate
。被推到heroku,这就成功了。
TLDR:状态503找不到路径="/faviicon.ico"并不一定意味着问题源于heroku部署的应用程序中缺少favicon.ico。更深入地确定根本原因的方法是使用heroku logs -t
。