Использование module.exports= router, но по-прежнему получение Router.use() требует функции промежуточного программного обеспечения, но получил объект

Перерыл весь интернет и нашел только: «Убедитесь, что вы добавили module.exports = router» в конец файла маршрутизатора.

Мой файл маршрутизатора выглядит следующим образом:

let router = express.Router();

const staticOptions = {
  root: path.join(__dirname, "./../../assets")
};

// a bunch of router.get() functions

module.exports = router;
// auth/google

Затем я импортирую его в свой файл server.ts следующим образом:


import * as googleAuthRouter from "./api/AccountLinking/googleAuth";
...

app.use("/auth/google", googleAuthRouter);

но я все еще получаю следующую ошибку:

TypeError: Router.use() requires a middleware function but got a Object

У меня есть только один маршрут, который я импортирую в файл server.js. Я только начал этот проект. Везде, где я смотрю в Интернете, говорится: «вам просто нужно сделать module.exports = router, и это исправит». В данном случае это не так. Что я делаю не так?

Typescript сводит меня с ума и серьезно мешает моим усилиям по разработке. Я довольно близок к тому, чтобы сдаться и вернуться к простому JS

Отвечает ли это на ваш вопрос? TypeError: Router.use() требует промежуточной функции, но получил объект

Linda Lawton - DaImTo 14.12.2020 11:36

К сожалению нет. app.router устарел в экспрессе 3.0+, как говорится в одном из ответов. В других ответах просто предлагалось то, что я написал выше: использование module.exports = router, что не работает

hundred_dolla_tea 14.12.2020 11:49
Поведение ключевого слова "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
2
249
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Измените импорт, чтобы потребовать:

const googleAuthRouter = require('./api/AccountLinking/googleAuth');

app.use("/auth/google", googleAuthRouter);

Я пошел дальше и изменил его на import googleAuthRouter = require("./api/AccountLinking/googleAuth"); и это сработало. Ваше решение, скорее всего, тоже сработает, поэтому я выбрал его в качестве решения. Спасибо, Юрий.

hundred_dolla_tea 14.12.2020 17:24

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