Ce que je pense pourrait résoudre votre problème
Avis de non-responsabilité : Je n'ai utilisé ni Heroku ni MongoDB Atlas mais je les examine.
Selon un problème Github que j'ai trouvé, vous obtiendrez ce message d'erreur si vous n'avez pas mis en liste blanche les adresses IP du serveur dans MongoDB Atlas.
En lisant les documents MongoDB Atlas, la seule façon que je vois de le faire en combinaison avec les dynos Heroku est d'ajouter 0.0.0.0/0
(c'est-à-dire toutes les adresses) à votre liste blanche MongoDB Atlas.
Essayez-le et dites-nous si vous pouvez instancier une connexion.
Sur SSL
En essayant de répondre à la question SSL, je ne pense pas que vous ayez besoin de l'activer sur Heroku sur la base de ce que j'ai lu, bien que je ne sois pas totalement sûr.
Si le serveur MongoDB effectuait la validation du certificat, le code Node.js pour s'y connecter devrait ressembler à ce qui suit (extrait de la documentation du pilote Node.js) :
var MongoClient = require('mongodb').MongoClient,
f = require('util').format,
fs = require('fs');
// Read the certificates
var ca = [fs.readFileSync(__dirname + "/ssl/ca.pem")];
var cert = fs.readFileSync(__dirname + "/ssl/client.pem");
var key = fs.readFileSync(__dirname + "/ssl/client.pem");
// Connect validating the returned certificates from the server
MongoClient.connect("mongodb://localhost:27017/test?ssl=true", {
server: {
sslValidate:true
, sslCA:ca
, sslKey:key
, sslCert:cert
, sslPass:'10gen'
}
}, function(err, db) {
db.close();
});
Si le serveur MongoDB ne vérifie aucun certificat SSL, vous pouvez simplement utiliser un code comme celui-ci (également tiré de la documentation du pilote Node.js) :
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/test?ssl=true", function(err, db) {
db.close();
});
Étant donné que la documentation Atlas contient l'exemple de code suivant pour s'y connecter à partir de Node.js, je pense que vous ne le faites pas devez activer SSL sur Heroku :
var MongoClient = require('mongodb').MongoClient;
var uri = "mongodb://kay:[email protected]:27017,mycluster0-shard-00-01-wpeiv.mongodb.net:27017,mycluster0-shard-00-02-wpeiv.mongodb.net:27017/admin?ssl=true&replicaSet=Mycluster0-shard-0&authSource=admin";
MongoClient.connect(uri, function(err, db) {
db.close();
});