无法在TypeScipt代码中读取.env文件的值

时间:2019-06-23 14:44:15

标签: javascript typescript dotenv

我正在尝试使用.env读取JWT机密并验证我的令牌。

目前,我的课程是加载.env并读取值,之后我可以创建一个令牌:

export default class AuthMiddleware {
  constructor() {
  }

  private async getJWTSecret(): Promise<string> {
    await dotenvSafe.config();
    let JWTSecret = await process.env.JWT_SECRET || "g&n&r1c5&cre7";
    return JWTSecret;
  }

  public async createJWTToken(user: UserModel): Promise<any> {
    const JWTSecret = await this.getJWTSecret();
    let payloadJWTToken: {};
    payloadJWTToken = { userId: user.id, role: "GENERIC", iss: "My Company", iat: 1516239022, aud: "https://www.mycompany.com.br/"};
    let JWTToken = jwt.sign(payloadJWTToken, JWTSecret);
    return JWTToken;
  }
}

现在,我以相同的方式添加了一种方法来验证正在尝试读取.env的令牌:

public async checkJWTToken(req: Request, res: Response, next: NextFunction): Promise<any> {
    const JWKtokenInRequestHeader = <string>req.headers["authorization"];

    try {
      this.getJWTSecret().then(secret => console.log(`Secret: ${secret}`))
      .catch(error => console.log(`An error has occurred: ${error}`));

    } catch (erro) {
      console.log(`Error message: ${erro}`);
    }

    next();
}

但是我收到此错误消息:

Error message: TypeError: Cannot read property 'getJWTSecret' of undefined

我无法理解为什么我用另一种方法以同样的方式读取此.env,并且效果很好,但现在不起作用。

一些提示?

0 个答案:

没有答案