I'm using Express framework to develop my backend APIs, but I encounter with one issue today. I have one server.js
(entry) file from there I want to pass app
instance to routes/api.js
file. where I wanted to check if endpoint prefix is /api/v2
then I want to call the routes/index.js
file. But I'm unable to achieve this approach. I'm adding my code of server.js
routes/api.js
& routes/index.js
files below.
Server.js
/** Core Packages */
/** NPM Packages */
const express = require('express');
/** Custom Packages */
const routerApi = require('./routes/api');
const dbConnect = require('./config/database');
const app = express();
dbConnect();
app.use(express.json());
app.use(express.urlencoded({extended: true}));
routerApi(app);
const PORT = 4000;
/** Creating a Server */
const server = app.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}/`);
});
routes/api.js
/** Core Packages */
/** NPM Packages */
/** Custom Packages */
const apiRouter = (app) => {
app.use('/api/v2', require('./index')(app));
};
module.exports = apiRouter;
routes/index.js
/** Core Packages */
/** NPM Packages */
/** Custom Packages */
const routes = (app) => {
app.all('/*', (req, res, next) => {
if (req.path === '/')
return res.status(200).send({msg: 'Welcome to landing page.'});
}
}
module.exports = routes;
Error
TypeError: Router.use() requires a middleware function but got a undefined
at Function.use (/home/admini/Documents/skreem-api-node/node_modules/express/lib/router/index.js:458:13)
at Function.<anonymous> (/home/admini/Documents/skreem-api-node/node_modules/express/lib/application.js:220:21)
at Array.forEach (<anonymous>)
at Function.use (/home/admini/Documents/skreem-api-node/node_modules/express/lib/application.js:217:7)
at apiRouter (/home/admini/Documents/skreem-api-node/routes/api.js:9:7)
at Object.<anonymous> (/home/admini/Documents/skreem-api-node/server.js:52:1)
at Module._compile (internal/modules/cjs/loader.js:816:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)
at Module.load (internal/modules/cjs/loader.js:685:32)
at Function.Module._load (internal/modules/cjs/loader.js:620:12)
at Function.Module.runMain (internal/modules/cjs/loader.js:877:12)
at internal/main/run_main_module.js:21:11
Can anyone please help me out to resolve this problem? Any kind of help will be appriciated. Thanks You!