我使用npm模块进行了测试:backend.js上的“node-dev”和文件夹根目录上的“serve”。
我有两个指南试图帮助我:
http://www.tilcode.com/deploying-a-mean-stack-app-to-heroku/
和另一个来自Scotch.io的“在Heroku上使用MongoDB和node.js应用程序”
我在文章中没有做的不应该很重要:在tilcode中,它说使用github生成一个SSH密钥...相反,我用我的mac做了一个,用一些指南做了一个终端命令。
总结一下我的步骤:
我的怀疑:
>
我有另一个使用PostgreSQL的应用程序...但是我把它放在了“维护模式”,因为我的免费帐户只允许一个活动的发电机。
我不是上传所有节点模块,而是让heroku像这样安装它:heroku config:set npm_config_production=false
我想这可能是我如何从前端JavaScript引用后端的。
null
// var API = 'http://localhost:5000';
var API = 'http://limitless-falls-21423.herokuapp.com';
var app = angular.module('HAL-app', ['ngRoute', 'ngCookies']);
// Some other stuff that came from sandbox app.js
app.directive('whenScrolled', function() {
return function(scope, elm, attr) {
var raw = elm[0];
elm.bind('scroll', function() {
if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) {
scope.$apply(attr.whenScrolled);
}
});
};
});
null
最后,当我运行heroku logs-tail时,我得到了以下消息:
2016-09-05T01:35:27.417956+00:00APP[Web1]:npm错误!Linux 3.13.0-93-通用
2016-09-05T01:35:27.418339+00:00APP[Web1]:npm错误!argv“/app/.heroku/node/bin/node”“/app/.heroku/node/bin/npm”“start”
2016-09-05T01:35:27.418593+00:00APP[Web1]:npm错误!节点V5.11.1
2016-09-05T01:35:27.418931+00:00APP[Web1]:npm错误!npm v3.8.6
2016-09-05T01:35:27.419219+00:00APP[Web1]:npm错误!代码ELIFECYCLE
2016-09-05T01:35:27.419386+00:00APP[Web1]:npm错误!HalloCam@1.0.0 start:节点backend.js
2016-09-05T01:35:37.178679+00:00 Heroku[router]:at=error code=h10 desc=“App已崩溃”method=get path=“/”host=Limitless-Falls-21423.herokuapp.com request_id=4bc9639f-3f64-4c0b-9b0d-d99b967f1b36 fwd=“73.54.129.252”dyno=connect=service=status=503字节=
******在雅舒亚评论后编辑**
我现在在访问该应用程序时会收到一条“无法获取”的消息。我对将heroku变量限制为:node_env=production有点犹豫不决
但我想如果我使用.gitignore将mongodb(mongo labs)的凭据上传并隐藏起来,就会发生这样的情况。
无论如何,我仍然认为这不是“获取”我的路由,我设置了我的angularjs文件,如下所示:
// var API = 'http://localhost:5000'; ##this is the old way to connect my front end factory routes to the backend hosted on 5000
我现在就像这样
var API = 'http://obscure-brook-35938.herokuapp.com/';
我想可能得长这样:
var API = process.env.PORT
API的目的是用于我的棱角分明的工厂,像这样:
null
app.factory('backEnd', function($http) {
return {
getSignUp: function(data) {
return $http({
method: 'POST',
url: API + '/signup',
data: data
});
},
getLogin: function(data) {
return $http({
method: 'POST',
url: API + '/login',
data: data
});
},
null
新的Heroku日志--尾部
2016-09-05T15:42:52.796464+00:00 Heroku[路由器]:at=info method=get path=“/”host=obscure-brook-35938.herokuapp.com request_id=41fa32e2-42cc-426d-a0d0-ef6755329497 fwd=“73.54.129.252”dyno=web.1连接=1ms服务=18ms状态=404字节=243
2016-09-05T15:42:53.893156+00:00 Heroku[路由器]:at=info method=get path=“/”host=obscure-brook-35938.herokuapp.com request_id=dec235fd-6d54-42e6-b0cc-2f83920d500d fwd=“73.54.129.252”dyno=web.1连接=1ms服务=8ms状态=404字节=243
2016-09-05T15:42:54.602312+00:00 Heroku[路由器]:at=info method=get path=“/”host=obscure-brook-35938.herokuapp.com request_id=8ceb054b-78e9-49b8-bdee-286ca6efcb0d fwd=“73.54.129.252”dyno=web.1连接=1ms服务=3ms状态=404字节=243
我关闭了这个线程,因为它变得相当长,并且出现了一个单独的问题。正如@Yashua所说,解决这个MongoDB/Heroku问题最好的办法就是一步一个脚印。我从这次经历中学到了一些工具:
我现在已经把我的后端/前端合并到一个根目录中了。但是我的前端和后端使用2个不同的端口来工作,而它应该只使用一个。我不知道最好的方法是什么,因为当我用“process.env.mongolab_uri”一样的端口向它们提供时,我得到了一个错误,提示我错了。
2016-09-05T23:36:51.802697+00:00 app[web.1]: /app/node_modules/mongodb/lib/server.js:261
2016-09-05T23:36:51.802698+00:00 app[web.1]: process.nextTick(function() { throw err; })
2016-09-05T23:36:51.802698+00:00 app[web.1]: ^
2016-09-05T23:36:51.803862+00:00 app[web.1]: MongoError: failed to connect to server [#:27017] on first connect
2016-09-05T23:36:51.803864+00:00 app[web.1]: at Pool.<anonymous> (/app/node_modules/mongodb-core/lib/topologies/server.js:313:35)
2016-09-05T23:36:51.803864+00:00 app[web.1]: at emitOne (events.js:96:13)
2016-09-05T23:36:51.803865+00:00 app[web.1]: at Pool.emit (events.js:188:7)
2016-09-05T23:36:51.803865+00:00 app[web.1]: at Connection.<anonymous> (/app/node_modules/mongodb-core/lib/connection/pool.js:260:12)
2016-09-05T23:36:51.803866+00:00 app[web.1]: at Connection.g (events.js:286:16)
2016-09-05T23:36:51.803867+00:00 app[web.1]: at emitTwo (events.js:106:13)
2016-09-05T23:36:51.803867+00:00 app[web.1]: at Connection.emit (events.js:191:7)
2016-09-05T23:36:51.803868+00:00 app[web.1]: at Socket.<anonymous> (/app/node_modules/mongodb-core/lib/connection/connection.js:162:49)
2016-09-05T23:36:51.803868+00:00 app[web.1]: at Socket.g (events.js:286:16)
2016-09-05T23:36:51.803869+00:00 app[web.1]: at emitOne (events.js:96:13)
2016-09-05T23:36:51.803870+00:00 app[web.1]: at Socket.emit (events.js:188:7)
2016-09-05T23:36:51.803870+00:00 app[web.1]: at connectErrorNT (net.js:1016:8)
2016-09-05T23:36:51.803871+00:00 app[web.1]: at _combinedTickCallback (internal/process/next_tick.js:74:11)
2016-09-05T23:36:51.803871+00:00 app[web.1]: at process._tickCallback (internal/process/next_tick.js:98:9)
2016-09-05T23:36:51.881752+00:00 heroku[web.1]: State changed from starting to crashed
2016-09-05T23:36:51.867426+00:00 heroku[web.1]: Process exited with status 1
很难马上说出来,但这里有一些建议:
我查看了您的回购,您的package.json
在两个地方无效。使用JSON验证器。
其次,您的前端应用程序将不会是一个问题。您应该能够直接转到服务器URL而不会使其崩溃。
如果还没有更改数据库密码,请更改。我看到您删除了mongo_creds.json
文件,但历史记录可以在GitHub上获得。
在Heroku上您应该需要的唯一VAR是node_config
设置为production。
回答这个问题:我是否需要在Heroku上获得SSL支持才能使用SSL在Heroku和Atlas MongoDB Cloud之间建立连接?(TSL/SSL连接是访问Atlas MongoDB Cloud服务的要求)。 我正在尝试连接我的Heroku应用程序,它是在node中编写的。js,到Atlas MongoDB云托管的集群。 我当前的数据库托管在mLab(作为Heroku附加组件),用于通过mo
我的heroku服务器有这个问题 at=错误代码=H14 desc="没有运行Web进程" 我试图逃跑 heroku ps:scale web=1 但收到这个错误 扩展web进程。。。失败!没有像web这样的类型 Heroku ps: restart web.1--app dashboardaudi88重启web.1进程...完成 这是heroku的日志
从。NET应用程序连接到远程MongoDb实例有点困难。 我创建了一个非常简单的控制台应用程序,它基本上是一个冒烟测试,并带回一个项目。如果我在运行MongoDb服务的服务器上运行它,它将与MongoDb进行对话,不会有任何问题。ConnectionString就是。 我已经为服务器上的27017端口创建了一个inboudd规则,甚至完全关闭了防火墙。 Mongo服务器的cfg文件非常基本: 干杯
我刚刚在Heroku中创建了一个新的公关应用程序,添加了GrapheneDB。 null Python 3.6.5 Neo4J-Driver 1.5.3
我有一个问题,我用套接字构建了服务器部分和客户机,没有收到任何错误。当我在浏览器中键入本地地址时,它会在cmd中显示信息,但当我在emulator或mobile中运行Android应用程序时,它不会连接到服务器。 我使用的权限: 服务器代码: Main Activity.java是: 请引导我。