我使用npm模块测试了它:backend.js上的“node-dev”和文件夹根目录下的“serve”。
我有这两个试图帮助我的指南:
http://www.tilcode.com/deploying-a-mean-stack-app-to-heroku/
和另一个来自scotch.io“在Heroku上使用带有Node.js应用程序的MongoDB”
我没有从那些无关紧要的文章中做到:在tilcode中,它表示使用github生成SSH密钥...而是使用我的mac和终端命令使用一些指南。 / p>
总结我的步骤:
我的怀疑:
我确实有另一个使用postgreSQL的工作应用程序...但我把它放在'维护模式',因为我的免费帐户只允许一个活跃的发电机。
我没有上传所有节点模块,而是学会了我可以像这样安装heroku: heroku config:设置NPM_CONFIG_PRODUCTION = false
我认为这可能是我从前端javascript引用后端的方式。
// 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);
}
});
};
});
最后,当我运行heroku logs --tail时,我收到了以下消息:
2016-09-05T01:35:27.417956 + 00:00 app [web.1]:npm ERR! Linux 3.13.0-93-generic
2016-09-05T01:35:27.418339 + 00:00 app [web.1]:npm ERR! argv“/app/.heroku/node/bin/node”“/ app / .heroku / node / bin / npm”“start”
2016-09-05T01:35:27.418593 + 00:00 app [web.1]:npm ERR!节点v5.11.1
2016-09-05T01:35:27.418931 + 00:00 app [web.1]:npm ERR! npm v3.8.6
2016-09-05T01:35:27.419219 + 00:00 app [web.1]:npm ERR!代码ELIFECYCLE
2016-09-05T01:35:27.419386 + 00:00 app [web.1]:npm ERR! hallocam@1.0.0开始:
node backend.js
2016-09-05T01:35:37.178679 + 00:00 heroku [router]:at = error code = H10 desc =“App crashed”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 bytes =
****** Yashua评论后编辑**
访问该应用时,我现在收到“无法获取”消息。有点犹豫是否将我的heroku变量限制为: NODE_ENV =生产
但我想这是因为如果我使用.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的目的是用于我的角度工厂:
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
});
},
New Heroku logs --tail
2016-09-05T15:42:52.796464 + 00:00 heroku [router]: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 connect = 1ms service = 18ms status = 404 bytes = 243
2016-09-05T15:42:53.893156 + 00:00 heroku [router]: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 connect = 1ms service = 8ms status = 404 bytes = 243
2016-09-05T15:42:54.602312 + 00:00 heroku [router]: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 connect = 1ms service = 3ms status = 404 bytes = 243
答案 0 :(得分:0)
很难分辨,但这里有一些指示:
我看了你的回购,你的package.json
在2个地方无效。使用JSON validator。
其次,您的前端应用程序不会成为问题。您应该能够直接转到服务器URL,而不是崩溃。
如果您还没有更改数据库密码。我看到您删除了mongo_creds.json
文件,但历史记录可以在GitHub上找到。
Heroku上你需要的唯一变量是NODE_CONFIG
设置为生产。
答案 1 :(得分:0)
我正在关闭这个帖子,因为它变得非常冗长并且出现了一个单独的问题。正如@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