Исключение при использовании объекта маршрутизатора в классе машинописи в nodejs - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть nodejs служба в машинописи. Я пытаюсь установить отдельный слой маршрутизации в приложении.

У меня есть файл приложения. js, где в

let IndividualRoute= require('./routing/IndividualRoute');
app.use('/users', IndividualRoute);

У меня есть файл IndividualRoute.ts, где я пытаясь использовать объект маршрутизатора, как показано ниже

import express = require('express');
import individualValidation from '../users/IndividualValidation';
let router = express.Router();

class IndividualRoute {
         router.get('/individualList', individualValidation.list);
}

export = IndividualRoute;

Когда я пытаюсь сделать выше, я получаю следующее исключение

enter image description here

Я попробовал следующие вещи

router.get('/individualList', (request, response) => {
        response.send('Hello world!');
});

Но у меня та же проблема. Также, если я удаляю класс и у меня есть простой файл без класса, я не получаю это исключение.

По сути, я пытаюсь сделать так, чтобы при совпадении маршрута он попадал в соответствующую функцию в файле IndividualValidation. как в следующем случае

router.get('/individualList', individualValidation.list);

Если маршрут - users / individualList, он должен выполнить функцию IndividualValidation.list с данными запроса. В основном я пытаюсь сделать то, что помечено как ответ в приведенной ниже ссылке

express .Router () против app.get

Любое предложение, что я поступаю неправильно.

Ответы [ 2 ]

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

В IndividualRoute.ts внесите следующие изменения:

import { Router } from 'express';
import individualValidation from '../users/IndividualValidation';
let router = Router();

router.get('/individualList', individualValidation.list);

export default router;

Также, если вы используете машинопись, почему у вас есть приложение. js? Я предлагаю также использовать машинопись для этого файла. Еще одно предложение будет иметь index.ts в вашей папке routing с кодом:

import { Router } from express;
import IndividualRoute from "./IndividualRoute";

let router = Router();
router.use("/users", IndividualRoute); // set this for each individual route
/*
 * e.g.
 * router.use("/auth", auth);
*/

export default router;

Так что в вашем app.ts все, что вам нужно сделать, это:

import * as express from "express";
import routes from "./routing";

let app = express();
app.use(routes);

// other code

Надеюсь, вы найдете это полезным!

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

Ты пишешь класс. Внутри класса поместите конструктор и методы. Вы не можете написать код прямо здесь. Строка, которую вы написали, должна быть в конструкторе или в методе.

class IndividualRoute {
      constructor(){
         router.get('/individualList', individualValidation.list);
      }
}
...