Приложение Heroku angular node.js не подключается к базе данных mlab mongodb

Мое приложение Heroku запускается и работает нормально, пока я не попытаюсь сделать что-нибудь, что взаимодействует с его базой данных, после чего я получаю сообщение об ошибке «503- служба недоступна».

Я установил надстройку mLab на вкладке «Ресурсы» и добавил соответствующую строку подключения MONGODB_URI в раздел «config vars» на вкладке «Настройки», хотя я не уверен, излишне ли делать и то, и другое.

Когда я запускаю приложение с localhost, оно работает нормально, хотя я замечаю, что оно все еще использует мою локальную базу данных вместо базы данных mLab.

Вот мой файл server.js:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.set('port', (process.env.PORT || 5000));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended : true}))
var path = require('path');
app.use(express.static(path.join(__dirname, './dist/public/')));
app.get('*', function(req,res){
res.sendFile(path.join(__dirname, 'dist'));
});
require('./server/config/mongoose.js');
var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;
var url = process.env.MONGOLAB_URI;

MongoClient.connect(url, function (err, db) {
if (err) {
  console.info('Unable to connect to the mongoDB server. Error:', err);
} else {
  console.info('Connection established to', url);
};
var routes_setter = require('./server/config/routes.js');
routes_setter(app);
app.listen(app.get('port'), function(){
console.info('Node app is running on port', app.get('port'))
});
})

А вот и мой package.json:

{
  "name": "public",
  "version": "0.0.0",
  "main": "server.js",
  "scripts": {
    "nodemon": "nodemon server.js",
    "ng": "ng",
    "start": "node server.js",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "postinstall": "ng build --aot -prod"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/ActionPackedJack/Restaurant-Schedule"
  },
  "engines": {
    "node": "11.2.0",
    "npm": "6.4.1"
  },
  "dependencies": {
    "@angular/animations": "^6.0.3",
    "@angular/cli": "~6.0.8",
    "@angular/common": "^6.0.3",
    "@angular/compiler": "^6.0.3",
    "@angular/compiler-cli": "^6.0.3",
    "@angular/core": "^6.0.3",
    "@angular/forms": "^6.0.3",
    "@angular/http": "^6.0.3",
    "@angular/platform-browser": "^6.0.3",
    "@angular/platform-browser-dynamic": "^6.0.3",
    "@angular/router": "^6.0.3",
    "body-parser": "^1.18.3",
    "core-js": "^2.5.4",
    "express": "^4.16.4",
    "mongodb": "^3.1.10",
    "mongoose": "^5.3.12",
    "nodemon": "^1.18.6",
    "rxjs": "^6.0.0",
    "rxjs-compat": "^6.3.3",
    "typescript": "~2.7.2",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular/cli": "~6.0.8",
    "@angular/compiler-cli": "^6.0.3",
    "@angular-devkit/build-angular": "~0.6.8",
    "@angular/language-service": "^6.0.3",
    "@types/jasmine": "~2.8.6",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "~4.2.1",
    "typescript": "~2.7.2",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~1.7.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "~1.1.1",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.3.0",
    "ts-node": "~5.0.1",
    "tslint": "~5.9.1"
  }
}

Любой совет будет очень признателен. Большое спасибо!

Вы пытаетесь подключиться к URL-адресу "process.env.MONGOLAB_URI" и упомянули, что установили переменную env "MONGODB_URI", можете ли вы это проверить?

Vishal-Lia 28.11.2018 06:12

@ Вишал-Лия Ох, хороший улов. Несмотря на то, что я исправляю это, нажимаю мои изменения и перезапускаю приложение, но все равно получаю ошибку 503. Я также должен упомянуть, что когда я запускаю приложение локально, даже если оно работает, когда я запускаю его, он говорит: «Невозможно подключиться к серверу mongoDB. Ошибка: URL-адрес неверен, не может быть проанализирован»

Adam 28.11.2018 06:44

Просто убедитесь, что URL-адрес правильный, который включает имя пользователя и пароль для mlab db.

Vishal-Lia 28.11.2018 06:55

Да, он там, с заменой <dbuser> и <dbpassword> на соответствующие имя пользователя и пароль.

Adam 28.11.2018 08:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
244
1

Ответы 1

Внесение IP-адресов в белый список на Mlab

  1. Перейти в кластер

  2. Нажмите вкладку безопасности

  3. Перейти в белый список IP

  4. Нажмите на редактировать

Теперь вы можете занести в белый список все IP-адреса, нажав «Разрешить доступ из любого места» в настройках или указав IP-адрес в белом списке: 0.0.0.0/0

это решит проблему

Другие вопросы по теме