Привет, я пытаюсь внедрить некоторые зависимости в промежуточное ПО маршрута expressjs.
Обычно в вашем основном приложении вы делаете:
const express = require('express');
const userRouter = require('./routes/users.js');
const app = express();
app.use('/users', userRouter);
И в вашем users.js
у вас будет что-то вроде:
const express = require('express');
const router = express.Router()
router.post('/user', function (req, res, next) {...}
router.get('/user/:id', function (req, res, next) {...}
router.put('/user/:id', function (req, res, next) {...}
router.delete('/user/:id', function (req, res, next) {...}
Но я хотел бы передать некоторые зависимости, например, URL-адрес службы, и из документации не ясно, как это сделать, я подумал что-то вроде:
const express = require('express');
function userRoutes(options) {
const router = express.Router();
router.post('/user', function (req, res, next) {...}
router.get('/user/:id', function (req, res, next) {...}
router.put('/user/:id', function (req, res, next) {...}
router.delete('/user/:id', function (req, res, next) {...}
return router
}
module.exports.userRoutes = userRoutes;
, а затем в моем основном приложении использовать его как:
const userRouter = require('./routes/users.js');
const app = express();
app.use('/users', userRouter.userRoutes(options));
, но я получаю:
Users/jm/Private/Projects/api-gateway/node_modules/express/lib/router/index.js:458
throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
^
TypeError: Router.use() requires a middleware function but got a undefined
at Function.use (/Users/jm/Private/Projects/api-gateway/node_modules/express/lib/router/index.js:458:13)
at EventEmitter.<anonymous> (/Users/jm/Private/Projects/api-gateway/node_modules/express/lib/application.js:220:21)
at Array.forEach (native)
at EventEmitter.use (/Users/jm/Private/Projects/api-gateway/node_modules/express/lib/application.js:217:7)
at Object.<anonymous> (/Users/jm/Private/Projects/api-gateway/app.js:28:5)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
Любые предложения / решения приветствуются.