Перерыл весь интернет и нашел только: «Убедитесь, что вы добавили 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
К сожалению нет. app.router устарел в экспрессе 3.0+, как говорится в одном из ответов. В других ответах просто предлагалось то, что я написал выше: использование module.exports = router, что не работает
Измените импорт, чтобы потребовать:
const googleAuthRouter = require('./api/AccountLinking/googleAuth');
app.use("/auth/google", googleAuthRouter);
Я пошел дальше и изменил его на import googleAuthRouter = require("./api/AccountLinking/googleAuth"); и это сработало. Ваше решение, скорее всего, тоже сработает, поэтому я выбрал его в качестве решения. Спасибо, Юрий.
Отвечает ли это на ваш вопрос? TypeError: Router.use() требует промежуточной функции, но получил объект