Невозможно получить маршрутный экспресс / nodejs

1

Я больше разбираюсь в API-интерфейсах, поэтому решил создать простой API для пива/пивоваренных заводов, и он отлично работает, и тогда ни один маршрут не будет работать. Я протестировал его, создав новый маршрут, который предназначен исключительно для тестирования этой проблемы, и он отлично работает. Таким образом, я упростил другие маршруты, чтобы буквально отправить сообщение обратно в DOM с помощью res.send() чтобы увидеть, поможет ли резка соединения с БД, чтобы я определил проблему.

Этот тестовый маршрут работает по назначению, отправив сообщение в DOM "привет!". (/app/routes/test_routes.js):

module.exports = function(app, db) {
  app.get('/test', (req, res) => {
    res.send("hello!");
  });
};

Однако это не работает вообще, несмотря на то, что он идентичен функции (/app/routes/brewery_routes.js):

module.exports = function(app, db) {
  app.get('/brewery', (req, res) => {
    res.send("hello!");
  });
};

Это индекс маршрутов, который тянет все мои маршруты в (/app/routes/index.js):

const beerRoutes = require('./beer_routes');
module.exports = function(app, db) {
  beerRoutes(app, db);
};

const breweryRoutes = require('./brewery_routes');
module.exports = function(app, db) {
  breweryRoutes(app, db);
};

const cityRoutes = require('./city_routes');
module.exports = function(app, db) {
  cityRoutes(app, db);
};

const testRoutes = require('./test_routes');
module.exports = function(app, db) {
  testRoutes(app, db);
};

Это мой файл сервера, который обрабатывает все маршруты (/server.js):

const express     = require('express');
const MongoClient = require('mongodb').MongoClient;
const bodyParser  = require('body-parser');
const app         = express();
const db          = require('./config/db');

const PORT = 8000;

app.use(bodyParser.urlencoded({ extended: true }));

MongoClient.connect(db.url,(err, database) =>{

  if (err) {
    return console.log(err)
  }

  require('./app/routes')(app, database);

  app.listen(PORT, () => {
    console.log("We are pouring beer at port " + PORT);
  });
});

Общая файловая структура моего приложения:

Root/ 
  app/
    routes/
      index.js
      test_routes.js
      brewery_routes.js
      beer_routes.js
      city_routes.js
  server.js

Что странно, когда я просматриваю журналы консоли, я не вижу ошибок для моего /test маршрута, но другие маршруты возвращаются с этим огромным списком ошибок шрифта. Как вы можете видеть по моему коду, у меня нет загруженных шрифтов, поэтому мне интересно, является ли это более серьезной проблемой, чем я знаю.

Изображение 174551

Какие-либо предложения?

  • 0
    это то, что загружается вашими клиентскими библиотеками. Что-то в файле CSS или другом месте, которое вы здесь не показывали.
  • 0
    @Paul, кроме моего файла package.json, который был создан моим npm init, в моем проекте больше нет ничего, что я не показывал. Это чисто для API и не является частью интерфейса. Выбранный ответ от друга разрешил эту ошибку шрифта. Моя проблема заключалась в размещении нескольких module.exports в одном файле вместо всех моих функций маршрутизации внутри одного module.exports. Спасибо за попытку, хотя!
Теги:
express

1 ответ

2
Лучший ответ

В index.js вы index.js несколько вещей в module.exports снова и снова. Только последний выживет и будет доступен тем, кто нуждается в модуле. Вы не показываете код, который загружает index.js и пытается использовать эти маршруты, поэтому я не знаю, что такое правильное решение, но это точно объясняет, почему только последний маршрут /app/routes/test_routes.js в index.js может когда-либо работать.

Таким образом, каждое из этих присвоений module.exports перезаписывает предыдущее. Только последний выживает и фактически экспортируется:

const beerRoutes = require('./beer_routes');
module.exports = function(app, db) {
  beerRoutes(app, db);
};

const breweryRoutes = require('./brewery_routes');
module.exports = function(app, db) {
  breweryRoutes(app, db);
};

const cityRoutes = require('./city_routes');
module.exports = function(app, db) {
  cityRoutes(app, db);
};

const testRoutes = require('./test_routes');
module.exports = function(app, db) {
  testRoutes(app, db);
};

Это так:

let a;

a = function() { console.log("1"); }
a = function() { console.log("2"); }

a();    // outputs "2"

Возможно, это то, что вы хотите:

module.exports = function(app, db) {
    require('./beer_routes')(app, db);
    require('./brewery_routes')(app, db);
    require('./city_routes')(app, db);
    require('./test_routes')(app, db);
}

Затем, когда модуль загружается и вызывается конструктор, вы инициируете все эти маршруты.

  • 0
    Файл index.js из каталога маршрутов импортируется в файл server.js снизу с помощью требуемого приложения / маршрутов, но, честно говоря, вы получили его с первым пунктом. Это был множественный module.exports, который я имел в файле index.js. Я не могу поверить, что я упустил это. Спасибо большое за вашу помощь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню