2017-04-09 4 views
0

Ich habe eine einfache REST-API mit MEAN. Es ist auf Heroku gehostet, und alles funktioniert gut dort. Allerdings, wenn ich versuche, es auf localhost laufen ich die folgende Fehlermeldung erhalten:Knoten-Anwendung läuft auf Heroku, aber nicht localhost

TypeError: Parameter "url" must be a string, not undefined 
at Url.parse (url.js:81:11) 
at Object.urlParse [as parse] (url.js:75:5) 
at module.exports (/Users/ricardotaboada/Desktop/sbackend/node_modules/mongodb/lib/url_parser.js:15:23) 
at connect (/Users/ricardotaboada/Desktop/sbackend/node_modules/mongodb/lib/mongo_client.js:403:16) 
at Function.MongoClient.connect (/Users/ricardotaboada/Desktop/sbackend/node_modules/mongodb/lib/mongo_client.js:227:3) 
at Object.<anonymous> (/Users/ricardotaboada/Desktop/sbackend/server.js:15:21) 
at Module._compile (module.js:571:32) 
at Object.Module._extensions..js (module.js:580:10) 
at Module.load (module.js:488:32) 
at tryModuleLoad (module.js:447:12) 

Jede Idee, was los ist? Vielen Dank.

EDIT: Hier ist der Code, der Mongo verbindet:

mongodb.MongoClient.connect(process.env.MONGODB_URI, function (err, database) { 
if (err) { 
console.log(err); 
process.exit(1); 
} 

sbrdcontroller = new controller(database); 
console.log("Database connection ready"); 

// Initialize the app. 
var server = app.listen(process.env.PORT || 3000, function() { 
var port = server.address().port; 
console.log("App now running on port", port); 


    }); 
}); 

Antwort

0

Schwer zu sagen, ohne irgendeinen Code zu sehen.

Das heißt, von der Fehlermeldung klingt es wie Sie nicht eine gültige URL übergeben, um eine Verbindung zu Ihrem mongodb herzustellen.

EDIT:

rechts, so basierend auf Ihren Code, überprüfen Sie den Wert process.env.MONGODB_URI. Du kannst das von deinem heroku-Konto oder von deinem cli oder von console.log machen, aber ich wette, es ist nicht auf deiner heroku-App eingestellt. Abhängig vom verwendeten Mongo-Add-In verwenden sie verschiedene Umgebungsvariablennamen.

0

process.env.MONGODB_URI ist in Ihrer lokalen Umgebung undefiniert, weshalb der Fehler ausgelöst wird.

Fügen Sie diesen Code vor dem Datenbankverbindungscode:

var development = process.env.NODE_ENV !== 'production'; 

var mongo_url; 

if (development) { 
    mongo_url = 'mongodb://localhost:27017/mydb'; 
} 
else { 
    mongo_url = process.env.MONGODB_URI; 
} 

Dann ändern:

mongodb.MongoClient.connect(process.env.MONGODB_URI, function (err, database) { 

An:

mongodb.MongoClient.connect(mongo_url, function (err, database) { 

Ihrer lokalen Mongo Datenbank-Port Unter der Annahme, nicht geändert wurde, die Die lokale URL mit Port 27017 sollte funktionieren.

Jetzt sollte Ihr Code in Entwicklung und Produktion gut funktionieren.

Verwandte Themen