TypeScript错误:无法读取未定义

时间:2018-04-10 18:29:28

标签: typescript npm typescript2.0

我在打字稿中测试async / await,我在我的类中创建了示例函数,然后我为我的路径传递函数 testarSemAsyncAwait ,当我在Postman中测试时显示此错误:

enter image description here

我多次更改了这个功能,但我不知道是什么问题!

这是代码:

import { Router, Request, Response, NextFunction } from "express";

class UsuarioController {
  constructor() {}

  public fun1 () : any {
    setTimeout(function() {
      console.log('F1');
      return 4000;
    }, 4000);
  }

  public fun2 () : any {
    setTimeout(() => {
      console.log('F2');
      return 500;
    }, 500);
  }

  public async testarComAsyncAwait(req: Request, res: Response) {
    let x = await this.fun1();
    let y = await this.fun2();
    console.log('pronto');
  }

  public testarSemAsyncAwait(req: Request, res: Response) {
    let x = this.fun1();
    let y = this.fun2();
    console.log('pronto');
  }

}

const usuarioController = new UsuarioController();
export default usuarioController;

这就是路线:

import { Router }  from 'express';
import bcrypt = require('bcrypt');
import usuarioController from '../controllers/usuarioController';

class UsuarioRouter {
  router: Router;

  constructor() {
    this.router = Router();
    this.routes();

  }

  /**
   * Função que cria e define as rotas e suas respectivas funções no UserController
   */
  routes() {
    this.router.get('/', usuarioController.listUsuarios); // Rota para listar todos os usuários inseridos no BD
    this.router.post('/', usuarioController.createUsuario);  //  Rota para criar usuário e inserir no BD
    this.router.put('/:login', usuarioController.updateUsuario); //  Rota para atualizar dados do usuário no BD
    this.router.delete('/:login', usuarioController.deleteUsuario);  //  Rota para deletar usuário do BD
    this.router.post('/login', usuarioController.validateToken); //  Valida token do usuário no login
    this.router.post('/receberDados', usuarioController.receberDadosSQL); //  Rota para receber e tratar JSON do SQLServer
    this.router.get('/enviarDados', usuarioController.enviarDadosAPP); //  Rota que envia os dados solicitados pelo cliente (APP)
    this.router.get('/testeAsync', usuarioController.testarSemAsyncAwait); // Teste de Async/Wait
    //this.router.get('/teste/auth', usuarioController.testarToken); // Testa o uso de token em rotas -> funcionou
  }
}

//  Exportação
const usuarioRoutes = new UsuarioRouter();
usuarioRoutes.routes();
export default usuarioRoutes.router;

出错的路线是:

this.router.get('/testeAsync', usuarioController.testarSemAsyncAwait);

欢迎任何帮助!

0 个答案:

没有答案