EDIT; прикрепление моего app.js, я используюOpenShift MongoError: auth не удается решить проблему?
git add app.js
git commit -m "updated app.js"
git push
команды нажать код из локальной машины, и мой app.js код выглядит следующим образом:
/*
*RESTfull server
*/
//defining express middleware
var express=require('express');
//require mongoose, this middleware helps in modeling data for mongodb
var mongoose=require('mongoose');
//require passport, this middleware helps in authentiation
var passport=require('passport');
//require passport, this middleware parsing body
var bodyParser = require('body-parser');
var flash = require('connect-flash');
//define port on which node app is gonna run
//var port = process.env.PORT || 8000;
var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080 ;
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1' ;
var app=express();
app.use(bodyParser.json());
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
======================================================================
app.listen(server_port,server_ip_address);
console.log('The magic happens on port ' + 'http://'+server_ip_address+':'+server_port);
EDIT: Я заметил, все MongoDB код подключения, теперь у моего app.js есть простой код expressjs, но я могу видеть тот же вывод из команды «rhc tail -a app», я не уверен, почему nodejs catridge пытается подключиться к mongodb, хотя в коде нет кода app.js, возможно ли, что журнал был сгенерирован ранее и отображается тот же журнал? Можно ли очистить файл журнала и проверить его один раз? Может кто-нибудь, пожалуйста, помогите мне.
Я развернул приложение nodejs (expressjs) для сервера с открывающейся поддержкой. Я нахожусь в mongoError «MongoError: auth failed», я предоставляю учетные данные серверу mongodb. Изначально, когда начинается дочерний процесс узла, он пытается подключиться к
«mongodb: // admin: XXXXXX @ ip: port», но он должен подключиться к «mongodb: // admin: XXXXXX @ ip: port/admin» as учетные данные находятся в коллекции admin.system.users. Я использую mongoose для подключения к mongoDB, поэтому я сменил свой mongoose на mongoose.connect (mongodb: // admin: XXXXXX @ ip: port/admin); Но я все еще вижу, что дочерний процесс пытается подключиться к этому URL-адресу «mongodb: // admin: XXXXXX @ ip: port», но позже он подключается к правильной коллекции, и я могу видеть консольный вывод следующего кода ,
mongoose.connection.once('connected', function() {
console.log("Connected to database G")
});
Я проверил несколько маршрутов, они работают отлично. Я хочу понять, почему это так, и я могу игнорировать эту ошибку или как я могу решить эту проблему?
Заранее благодарен.
HI Бен, спасибо за быстрый ответ, я на самом деле используя переменные среды процесса, я просто использовал формат ip, о котором идет речь, даже тогда он ведет себя по вышеуказанному пути. –
. Я вижу ... у нас есть несколько серверов на OpenShift, и мы просто используем переменную окружения без «admin» в конце U RL, и все они отлично работают без ошибок. Когда создается картридж mongodb, openshift предоставляет URL-адрес, который является просто переменной окружения без присоединенного «admin». – Ben
Привет, Бен, я пробовал это, но я столкнулся с той же проблемой. Интересно, что на этот раз тоже такая же картина продолжается, и я получаю сообщение «Подключено к базе данных G» при третьей попытке, я вставляю вывод команды «rhc tail -a app» вниз –