这可能是一个愚蠢的问题,但我想知道我应该使用什么平台来部署我的Angular.js应用程序?我尝试使用Heroku但得到了“没有检测到Cedar支持的应用程序”错误。有什么想法吗?
更新
我正在尝试将此作为一个Node.js应用程序服务于heorku,但似乎仍然无法使其正常工作。我的应用程序的根目录中有一个web-server.js文件,我在我的Procfile中引用它:
web: node web-server.js
这是我的package.json文件,也在根目录中:
{
"name": "medicare-data",
"version": "0.0.1",
"dependencies": {
},
"engines": {
"node": "0.10.x",
"npm": "1.2.x"
},
"respository": "medicare-data",
"author": "sararob"
}
我的heroku日志中出现了“slug编译错误”。关于为什么这可能不起作用的想法?
答案 0 :(得分:11)
如果它作为node.js应用程序提供,则可以在heroku上运行Angular应用程序。通常,当您开始使用Angular种子时,项目中已存在节点Web服务器脚本。我相信如果root中有一个package.json文件,heroku将检测并将其作为node.js应用程序运行。我很快就会回来更新这个答案。
更新
从Heroku文档(我不是专家),在部署部分之后有这段话:https://devcenter.heroku.com/articles/nodejs#visit-your-application
它基本上告诉你要确保你有一个dyno在运行。您可以通过应用程序设置下的Web应用程序执行此操作,也可以运行此命令:
$ heroku ps:scale web=1
要查看进程是否正在运行,请执行
$ heroku ps
=== web: `node web.js`
web.1: up for 10s
答案 1 :(得分:4)
我敢打赌,如果你查看你的日志,你会看到类似的东西:
2013-08-26T12:51:18.257006+00:00 heroku[web.1]: Starting process with command `node scripts/web-server.js`
2013-08-26T12:51:19.109974+00:00 app[web.1]: Http Server running at http://localhost:8000/
2013-08-26T12:51:34.369092+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path=/ host=cmwidget.herokuapp.com fwd="77.101.66.230" dyno= connect= service= status=503 bytes=
2013-08-26T12:52:19.445974+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
这意味着您的Angular种子应用程序正在使用它自己的端口(8000),而Heroku不允许这样做。您需要放弃将端口号分配给Heroku。
轻松修复。修改scripts/web-server.js
,然后更改:
this.server.listen(port);
......对此:
this.server.listen(process.env.PORT || port);
答案 2 :(得分:3)
我改变了这一行 var DEFAULT_PORT = 8000; 成: var DEFAULT_PORT = process.env.PORT || 8000;
..然后它奏效了。 所以我认为原因是heroku不喜欢你的应用程序在端口8000上运行。