Я создал приложение полного списка покупок (в основном, как список дел) с 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, и он работает в моей локальной среде.
Спасибо.