Route.get () требует функцию обратного вызова, но получил [объект Undefined] - PullRequest
0 голосов
/ 11 февраля 2020

Мое приложение в nodejs с машинописью. Я пытаюсь разделить маршрутизацию и представляю интерфейс и контроллер для выполнения более поздних логи c.

app.ts

const countryRoutes = require('./routes/countryroute')
app.use('/countries', countryRoutes)

countryRoute. ts

var countryuController = require('./../controller/country/countrycontroller')
var express = require('express')
var router = express.Router()

router.get('/getValidCountry', countryController.validCountry)
module.exports = router

ICountryController.ts

interface ICountryController {
    validCountry(req: any, res: any)
}

CountryController.ts

class CountryController {
    constructor() {}
    validCountry(req: any, res: any) {
        //application Logic here
    }
}

module.exports = CountryController

Вещи работает нормально до countryRoute.ts , но после этого элемент управления не go to countryController.ts , выдает ошибку ниже

Route.get() requires a callback function but got a [object Undefined]

Я пытался изменить способ записи метода в файле контроллера, но я получаю то же исключение. Также я пробовал решения для других вопросов, но ни один не работал для меня.

Любое предложение о том, как я могу написать функцию в файле класса для .get функции для принятия.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Вам просто нужно изменить структуру приложения следующим образом:

просто создайте файл с именем rout.ts и затем определите функции в нем

var countryuController = require('./../controller/country/countrycontroller');

module.export = (app) => {
  app.get("/getValidCountry" , countryController.validCountry);
}

и используйте маршруты в вашем app.ts следующим образом:

const app = express();
const routes = require("./routes");

routes(app);

, так что вы также можете связать несколько контроллеров: D!

0 голосов
/ 11 февраля 2020

Попробуйте выполнить следующее:

Измените countryRoute.ts следующим образом:

var countryuController = require('./../controller/country/countrycontroller')
var express = require('express')
var router = express.Router()

router.get('/getValidCountry', function(req, res){
   countryController.validCountry(req, res))
});
module.exports = router
...