Ошибка промежуточного программного обеспечения Express Router (для `app.use () требуется функция промежуточного программного обеспечения`)

Я знаю, что здесь много похожих вопросов, но обещаю, что прочитал их все и не нашел решения.

Я пытаюсь написать приложение с помощью Express Router, но получаю сообщение об ошибке:

app.use() requires a middleware function

Я уже пробовал реализовать промежуточное ПО разными способами, но не смог.

Вот последняя версия моего кода (очень аккуратная):

/index.js

import express from 'express';

const app = express();

app.use((req, res, next) => {
  console.info(req.method, req.url);
  next();
});

app.use(require('./routes'));

/routes/index.js

import credentials from './credentials';

export default [credentials];

/routes/credentials/index.js

import express from 'express';

const router = express.Router();

router.get('/credentials', async (req, res) => {
    console.info('Getting credentials...');
});

export default router;

Кто-нибудь может помочь мне найти проблему?

В файле маршрутов / индекса вы экспортируете массив с учетными данными как один элемент, но app.use ожидает функцию промежуточного программного обеспечения

Abhay Sehgal 26.12.2018 03:07

@AbhaySehgal Я фактически передаю массив, который нужно добавить в app.use моего индекса. Когда мне требуется напрямую /routes/credentials/index.js, я получаю эту ошибку: Router.use() requires a middleware function but got a Object.

Thiago Régis 26.12.2018 03:16

Я думаю, это потому, что nodejs использует commonjs, поэтому вам нужно использовать module.export вместо экспорта по умолчанию

Abhay Sehgal 26.12.2018 03:24

Замените экспортный маршрутизатор по умолчанию на module.export = router

Abhay Sehgal 26.12.2018 03:24

@AbhaySehgal Я только что ответил на свой вопрос: stackoverflow.com/a/53927036/3799550. В любом случае спасибо за ваше время.

Thiago Régis 26.12.2018 04:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
265
1

Ответы 1

Я нашел ошибку. В моем /index.js я должен был добавить свои маршруты в router.use вместо app.use.

Вот последний код моего /index.js:

import express from 'express';

const app = express();
const router = express.Router();

router.use(require('./routes'));
app.use(router);

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