0

I make simple instagram api application and I have problem with my routes, export and import. i get error TypeError: Router.use() requires a middleware function but got a undefined at Function.use (C:\Documents\Desktop\digi.me\node_modules\express\lib\router\index.js:458:13)
at Object. (C:\Documents\Desktop\digi.me\lib\routes\routes.js:12:8)

I have two routes userRouter that go on localhost:3000 and mediaRouter that go on localhost:3000/media

my userRouter.ts

 import request, { post } from "request"
import express from "express"
import { Router } from 'express';
const app = express()
const token: any = process.env.INSTAGRAM_TOKEN
export const userRouter = Router()
userRouter.get("/", (req: any, res: any) => {
    
    const url = 'https://graph.instagram.com/17841403377847296/?access_token='+token+'&fields=account_type,media_count,username'
    request({ url: url, json: true }, (error: string, response: any) => {
       if(error){
           res.send("unable to connect to service")
       }else{
        res.send("USER " + response.body.username + " HAVE " + response.body.media_count + " POSTS")
       }
       

    })
    
})

my mediaRouter

import request, { post } from "request"
import express from "express"
import {Post} from "../models/Post"
import { Router } from 'express';
const token: any = process.env.INSTAGRAM_TOKEN
export const mediaRouter = Router()

mediaRouter.get("/media", (req: any, res: any) => {
    console.log(0);
    
    const url = 'https://graph.instagram.com/17841403377847296/media?fields=id,media_url,timestamp&access_token='+token+''

    request({ url: url, json: true }, (error:string, response: any) => {
        if(error){
            console.log('error');
            
            res.send("unable to connect to service")
        } else {

            const array = response.body.data

             var Posts: Post[] = [];

            array.forEach(function (obj: any) {
                Posts.push(new Post(obj.media_url, obj.timestamp))    
              });
              
        res.send(Posts);

        }
        
    })

})

my routes.ts

import { Router } from 'express';
import userRouter from "./routes"
import mediaRouter from "./routes"
import  express from 'express';

const app = express();
const routes = Router();



routes.use('/', userRouter);
routes.use('/media', mediaRouter);



export default routes

and my main app.ts

import express from "express"
import * as dotenv from "dotenv"
import routes from  "./routes/routes"


const app = express()
dotenv.config();

//envirements variable for port
const port: any = process.env.PORT

app.use(routes);
app.use(express.json());


//Adding server to port
app.listen(port, () => {
    console.log("server is listen on port 3000")
})
jvzznjs
  • 61
  • 1
  • 6
  • 1
    You have not exported userRouter as a default export, so ```import userRouter from "./routes"``` is not a proper import. Use this instead: ```import { userRouter } from "./routes"``` – t348575 Nov 30 '20 at 09:10
  • This question already has answers here: https://stackoverflow.com/questions/27465850/typeerror-router-use-requires-middleware-function-but-got-a-object/28379965 – Link Nov 30 '20 at 09:11
  • Does this answer your question? [TypeError: Router.use() requires middleware function but got a Object](https://stackoverflow.com/questions/27465850/typeerror-router-use-requires-middleware-function-but-got-a-object) – Link Nov 30 '20 at 09:12

0 Answers0