[MongoNetworkError], при развертывании на Heroku приложение не подключается к mongoDB - PullRequest
0 голосов
/ 26 мая 2019

Я создал приложение полного списка покупок (в основном, как список дел) с mongoDB, Express, React и Node. Это работает в моей местной среде. Но когда я пытаюсь запустить приложение на Heroku, я получаю сообщение об ошибке соединения с mongoDB. Это говорит:

{ MongoNetworkError: connection 5 to cluster0-shopping-list-2-shard-00-02-0rerl.mongodb.net:27017 closed
name: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]: {} }

Я использую mongoDB Atlas, и я уже установил свой IP-адрес в белый список в кластере на Atlas.

Вот мои коды:

конфиг / keys.js

module.exports = {
    mongoURI: 'mongodb+srv://<Username>:<myUserPassword>3@cluster0-shopping-list-2-0rerl.mongodb.net/test?retryWrites=true'
}

server.js

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const path = require('path');
const items = require('./routes/api/items');
const app = express();

// Body-parser Middleware
app.use(bodyParser.json());

// db config
const db = require('./config/keys').mongoURI;

// connect to Mongo
mongoose
    .connect(db, { useNewUrlParser: true})
    .then(() => console.log('MongoDB connected...'))
    .catch(err => console.log(err));

// Use Routes
app.use('/api/items', items)

// Serve static assets if in production
if(process.env.NODE_ENV === 'production'){
    // Set static folder
    app.use(express.static('client/build'));

    app.get('*', (req, res) => {
        res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
    });
}

const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server is running on port ${port}.`));

package.json (я показываю это, потому что это может быть связано с этой проблемой.)

"scripts": {
    "dev": "concurrently \"npm run server\" \"npm run client\"",
    "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
  },

Я ожидаю, что приложение покажет список элементов, который есть в коллекции mongoDB. И я хочу позволить пользователям добавлять новые элементы. Но он не показывает никаких элементов, хотя я вижу, что некоторые элементы существуют в коллекции MongoDB, и он работает в моей локальной среде.
Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...