【问题标题】:How do I deploy an Angular.js app?如何部署 Angular.js 应用程序?
【发布时间】:2013-05-16 11:13:58
【问题描述】:

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

【问题讨论】:

  • Angular 是纯 JavaScript,应该独立于平台。此问答可能会有所帮助:stackoverflow.com/questions/13926419/…
  • 问题的标题应该是:“如何将任何文件上传到 Heroku”;-)

标签: node.js deployment angularjs


【解决方案1】:

如果将 Angular 应用程序用作 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

【讨论】:

  • 感谢 Sam,我现在正尝试在 heroku 上将其作为 node.js 应用程序提供,但仍然出现一些错误。请参阅上面的更新。有什么想法吗?
【解决方案2】:

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

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

【讨论】:

  • Heroku 希望为每个实例自动分配端口,因此将其更改为 process.env.PORT 允许您这样做。你的本地机器也会以这种方式自动分配一个端口,所以测试本地也一样。
【解决方案3】:

我敢打赌,如果您查看日志,您会看到如下内容:

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

【讨论】:

    猜你喜欢
    • 2018-07-19
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 2011-01-05
    • 2016-06-03
    相关资源
    最近更新 更多