如何部署Angular.js应用程序?

时间:2013-05-21 15:48:58

标签: node.js deployment angularjs

这可能是一个愚蠢的问题,但我想知道我应该使用什么平台来部署我的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编译错误”。关于为什么这可能不起作用的想法?

3 个答案:

答案 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上运行。