15

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

4

3 回答 3

11

如果它作为 node.js 应用程序提供,您可以在 heroku 上运行 Angular 应用程序。通常,当您开始使用 Angular 种子时,项目中已经有一个节点网络服务器脚本。我相信如果根目录中有一个 package.json 文件,heroku 会检测到它并将其作为 node.js 应用程序运行。我很快就会回来并更详细地更新这个答案。

更新

从 Heroku 文档(我不是专家)中,它在部署部分之后有这段话:https ://devcenter.heroku.com/articles/nodejs#visit-your-application

它基本上告诉你确保你有一个测功机正在运行。您可以通过应用程序设置下的网络应用程序执行此操作,也可以运行以下命令:

$ heroku ps:scale web=1

要查看进程是否正在运行,请执行

$ heroku ps
=== web: `node web.js`
web.1: up for 10s
于 2013-05-21T16:31:50.897 回答
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);
于 2013-08-26T12:57:34.920 回答
3

我改变了这一行 var DEFAULT_PORT = 8000; 进入:var DEFAULT_PORT = process.env.PORT || 8000;

..然后它起作用了。所以我相信原因是 heroku 不喜欢你的应用程序在端口 8000 上运行。

于 2013-07-19T16:49:17.837 回答