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

15

这可能是一个愚蠢的问题,但我想知道应该使用哪个平台来部署我的Angular.js应用程序?我尝试使用Heroku,但出现了“未检测到支持Cedar的应用程序”的错误。有什么想法吗?

更新

我正在尝试将其作为Node.js应用程序提供给Heroku,但似乎仍无法使其工作。在我的应用程序的根目录中有一个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 compilation error"错误。您有什么想法,为什么这可能不起作用?


Angular是纯JavaScript编写的,应该是跨平台的。这个问答可能会有所帮助:https://dev59.com/jGYr5IYBdhLWcg3wIG5u - Dan
问题的标题应该是:“如何将任何文件上传到Heroku”;-) - TheHippo
3个回答

11

如果将Angular应用程序作为node.js应用程序提供,则可以在Heroku上运行它。通常,在开始使用Angular seed时,项目中已经有一个node webserver脚本。我相信,如果根目录中有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

谢谢Sam,我现在正在尝试将它作为一个node.js应用程序在Heroku上提供,但仍然遇到一些错误。请看我上面的更新。有什么想法吗? - Sara

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);

3

我将这行代码

var DEFAULT_PORT = 8000;

修改为:

var DEFAULT_PORT = process.env.PORT || 8000;

然后它就起作用了。所以我认为原因是Heroku不喜欢您的应用程序在8000端口上运行。


Heroku希望自动为每个实例分配端口,因此将其更改为process.env.PORT可以让您这样做。 您的本地计算机也会以这种方式自动分配端口,因此本地测试将起作用。 - user393219

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接