• Register
0 votes
3.1k views

Problem :

Facing following express issue
throw new typeerror('router.use() requires a middleware function but got a ' + gettype(fn))
6 5 3
6,930 points

Please log in or register to answer this question.

2 Answers

0 votes

Solution :

I had faced same issue in recent past.

After doing the research i found following solution to your issue:

If your are using express and your code is as below

const router = express.Router();

Then please make sure to update your code as below

module.exports = router;

And please do it at the end of your page

9 7 4
38,600 points
0 votes

This error occurs when your route modules are not being exported or you forget to export the modules which use the router. Means Express does not have access to it when tries to identify all of your routes.

Solutions:

Solution 1:

You can fix it by adding a module.exports = router; at the end of each your route files.

Example:

var express = require('express');

var router = express.Router();

router.get('/', function(req, res, next) {

     //Do whatever...

});

module.exports = router;

Solution 2:

If your app.js is the main starting point of the app, then it should have;

const port = process.env.PORT || 3000;

app.listen(port, () => console.log(`Listening on port ${port}...`));

instead of ;

modules exports = app;

Generally, index.js is used for the starting point of the app. Rename index.js as helloworld.js and change the same at the require statements;

var routes = require('./routes/index');

to

var routes = require('./routes/helloworld');

After doing all the changes run the following command

node app.js

Solution 3:

Another method of having this error is to call a method that does not exist or not exported. If you are calling the login method but forget to define them.

Example:

For example, you are calling the method

app.post( ‘/api/login’, db.login);

 

11 5 2
3,890 points

Related questions

0 votes
1 answer 99 views
0 votes
0 answers 50 views
50 views
TypeError: Router.use() requires a middleware function but got a Object at Function.use (E:\firebase-CRUD_api\functions\node_modules\express\lib\router\index.js:458:13) at Function.<anonymous> (E:\firebase-CRUD_api\functions\node_modules\express\lib\application.js:220:21) ... at Function.Module._load (internal/modules/cjs/loader.js:899:14) at Module.require (internal/modules/cjs/loader.js:1042:19)
asked May 17, 2020 anonymous
0 votes
1 answer 2.4K views
2.4K views
Problem : I am just starting coding using the nodejs with express. So I simply did this in my file test.js which is into my folder routes : const myexpress = require('express'); const myrouter = new myexpress.Router(); myrouter.get('/test', (req, res) => { res.send(` ... browser, it tells me it Cannot get/test I don't understand why this is happening to me. Please let me know how can I fix this?
asked Jan 23, 2020 jwilliam 3.9k points
1 vote
2 answers 669 views
669 views
Problem : I am very new to the Node.js and I am having few issues. I am using the Node.js 4.10 and Express 2.4.3. While trying to execute my code I am receiving below error : Error: Can't render headers after they are sent to the client. ... , scope: 'offline_access,email,user_about_me,user_activities,manage_pages,publish_stream', failedUri: '/noauth' }) ])); realapp.use(realapp.router); }); . . .
asked Dec 12, 2019 alecxe 7.5k points
0 votes
1 answer 1.6K views
1.6K views
Problem : When I try to open the terminal and enter the following command: sudo mongod The output is received as below: [initandlisten] waiting for connections on port 27017 When I try to open another terminal and enter following command: sudo mongo I will open the mongo ... never posts the data. So I think my problem lies within mongo but I am unable to figure it out. POST /info 200 120002ms
asked Dec 12, 2019 alecxe 7.5k points
0 votes
1 answer 175 views
175 views
Problem : I have recently updated the node to 7.2.1 and noticed that there is the warning coming as below : (node:4346) DeprecationWarning: Calling an asynchronous function without callback is deprecated. Why is this 4346 ? I only have 2000 lines of code in the js file, so it must not be the line-number. Where should I look for that code?
asked Dec 10, 2019 alecxe 7.5k points
1 vote
2 answers 306 views
306 views
Problem : Looking for solution on bellow npm error npm err! this is probably not a problem with npm. there is likely additional logging output above.
asked Nov 8, 2019 peterlaw 6.9k points
1 vote
1 answer 510 views
510 views
Problem: I am very new to node so I think I am making something extremely wrong here as I am unable to find any info at all by doing research online. I already have the django site and I required the JS charting library so I chose the chart.js. I have ... build a chart. Failed to create chart: can't acquire context from the given item . Please help me in fixing above NodeJs elated error.
asked Jun 4, 2020 Martin K 6.6k points
0 votes
2 answers 407 views
407 views
Problem : I am new to Programming. I have created a Maven Project, the JavaScript project is cloned as the git sub-module inside Maven Project. My directory structure is as below mavenapp/src/main/javascript/[npm project files] and inside the package.json my test is looking as below : " ... install But it is not working for me.. npm version : 5.5.1 node version : 9.3.0 How can I fix above error?
asked Mar 3, 2020 mphil 2.3k points
0 votes
1 answer 1.6K views
1.6K views
Problem : I am beginner in the node.js .Currently I am trying to install node.js using the below command npm install nodemon --save. But when I try to run a server with below command nodemon server.js. then in my terminal I face below error: &ldquo;Nodemon is not recognized as internal or external command, operable program or batch file&rdquo;
asked Feb 13, 2020 mphil 2.3k points