이것은 Heroku에서 처음 시도합니다. 나는 heroku에서 "배포 성공"했지만 내 응용 프로그램을 방문했을 때 "응용 프로그램이 실패했습니다."이라고 표시됩니다. https://scotch.io/tutorials/use-mongodb-with-a-node-application-on-herokuheroku에 nodejs/mongoose를 배포합니다.
내가 까다로운 것은 내가 몽구스를 사용하고 있기 때문에, 그것은 URI와 잘 관련되지 않을 수 있습니다 생각 :
나는이 가이드를 따라 갔다. 나는 또한 mlab addon을 사용하고있다. 이 로컬로, 난 그냥 숨겨진 .json 파일에 사용자 이름과 암호를 저장 덕분에 작동하도록 var request = require('request');
var app = express();
var mongoCredentialss = require('/mongo_credentialss.json');
var conn = mongoose.connection;
var path = require('path');
// connect to the database
mongoose.connect('mongodb://' + mongoCredentials.username + ':' + mongoCredentialss.password + '@ds.mlab.com:12345/mydatabase-db');
mongoose.Promise = Promise;
app.listen(3000, function() {
console.log('Listening on 3000...');
});
난 정말 .env의를 이해하지 않았다 :
여기 내 백엔드에 대한 내 설정이다. gitignore. 가이드에서는 URI를 URI 파일에 변수로 직접 삽입하여 시도해 보았습니다. Heroku가/nodejs
를 설정 * : 나는
나중에 내가 이상 시작했을 때에, 나는 또한 Heroku가이 표준 buildpacks를 감지하지와 반복되는 문제가 가지고 계속 ... 일 '환경 숨겨진'을하는 방법도 모르겠어요 *** 편집 :
아직 몇 가지 문제가 있습니다. 나는 지금 내 '몽고 creds'나의 server.js 파일을 꺼내서 다음과 같습니다
var express = require('express');
var mongoose = require('mongoose');
mongoose.connect(process.env.MONGODB_URI);
var Promise = require('bluebird');
var bodyParser = require('body-parser');
var randtoken = require('rand-token');
var cors = require('cors');
var request = require('request');
var app = express();
var conn = mongoose.connection;
var fs = require('fs');
var path = require('path');
app.listen(3000, function() {
console.log('Our app is running on http://localhost:' + 3000);
});
일부 추가 컨텍스트 : 백엔드와 프론트 엔드 : 나는 2 개 서브 폴더를 수용 한 주요 프로젝트 폴더를 보유하고 있습니다. heroku에 배포 할 때 디렉토리를 기본 폴더로 변경하여 모든 것을 배포합니다.
"dependencies": {
"bluebird": "^3.4.1",
"body-parser": "^1.15.2",
"cors": "^2.7.1",
"express": "^4.14.0",
"mongoose": "^4.5.3",
"my-bcrypt": "^1.0.2",
"rand-token": "^0.2.1",
"request": "^2.74.0"
},
"engines": {
"node": "==6.0.0"
}
}
****** 편집 2 : Heroku가 로그 내 'backend.js'를 찾을 수 없습니다 도움이된다면
또한, 여기 내 package.json의 모습입니다 . 지금은 하나의 메인 프로젝트 폴더 디렉토리가 있는데 그 안에 --- 폴더> --- backend.js (노드)와 ---> frontend.js (각)
내 package.json은 다음과 같이 보입니다. 이 :
**"main": "frontend.js",**
"scripts": {
**"start": "node backend.js",**
"test": "echo \"Error: no test specified\" && exit 1"
},
heroku가 내 주 .js 파일을 찾는 방식을 잘못 이해했을 수 있습니다. 나의 이해에서부터 '시작'은 노드 파일을위한 것이고 '메인'파일은 각도/html 같은 프론트 엔드를위한 것이다.
하위 폴더에서 모든 것을 메인 폴더 (backend.js, frontend.js, css 파일, html 파일)로 옮긴 후 내 앱을 로컬로 실행할 수 있음을 다시 확인할 수 있습니다. 하지만 새로운 heroku 앱에 FRESH를 배포 할 때 다음과 같은 로그가 생성됩니다. 2016-08-27T20 : 45 : 26.674272 + 00 : 00 heroku [web.1] : 상태가 충돌에서 시작으로 변경됨 2016-08-27T20 : 45 : 28.574699 + 00 : 00 heroku [web.1] : 'node backend.js'명령으로 프로세스 시작 2016-08-27T20 : 45 : 30.818329 + 00 : 00 heroku [web.1] : 프로세스가 상태 1에서 종료되었습니다. –
2016-08-27T20 : 45 : 30.753675 + 00 : 00 app [web.1] : module.js : 341 2016-08-27T20 : 45 : 30.753686 + 00 : 00 app [web.1] : 오류가 발생했습니다. 2016-08-27T20 : 45 : 30.753687 + 00 : 00 app [web.1] :^ 2016-08-27T20 : 45 : 30.753687 + 00 : 00 app [web.1] : 2016-08-27T20 : 45 : 30.753692 + 00 : 00 app [web.1] : 오류 : '/app/backend.js'모듈을 찾을 수 없습니다. 2016-08-27T20 : 45 : 30.753694 + 00 : 00 app [web.1] : at 함수 .module._load (module.js : 290 : 25) 2016-08-27T20 : 45 : 30.753693 + 00 : 00 app [web.1] : –
Function.Module._resolveFilename (module.js : 339 : 15) 2016-08-27T20 : 45 : 30.753695 + 00 : 00 app [web.1] : Function.Module.runMain (module.js : 447 : 10) 2016-08-27T20 : 45 : 30.753696 + 00 : 00 app [web.1] : 시작시 (node.js : 148 : 18) 2016-08-27T20 : 45 : 30.753697 + 00 : 00 app [web.1] : node.js : 405 : 3 –