JS конструктор не может видеть переменную - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь использовать Twilio Access Token в функциях Firebase с TypeScript.

export const returnToken = functions.https.onRequest((req, res) => {
  const twilioAccessToken = twilio.jwt.AccessToken;
  const envconf = functions.config();
  const twilioAccountSid = envconf.twilio.sid; //saved them on environment
  console.log(twilioAccountSid); //prints out fine
  console.log(typeof twilioAccountSid !== "undefined"); //returns true
  const twilioApiKey = envconf.twilio.apikey;
  console.log(twilioApiKey); //prints fine too
  const twilioApiSecret = envconf.twilio.apisecret;
  console.log("gonna make a token"); //prints 

  const token = twilioAccessToken( //here it says TypeError: Cannot set property 'accountSid' of undefined
    twilioAccountSid,
    twilioApiKey,
    twilioApiSecret
  )
  console.log("gonna make a grant");
  const grant = new twilioAccessToken.VideoGrant();
  token.addGrant(grant);
  grant.room = "someroom";
  token.identity = "someid";
  res.send(token.toJwt());
})

, и я получаю сообщение об ошибке для конструктора twilioAccessToken, которое говорит TypeError: Cannot set property 'accountSid' of undefined

1 Ответ

0 голосов
/ 14 мая 2018

Поиск источника ->

function AccessToken(accountSid, keySid, secret, options) {
  if (!accountSid) { throw new Error('accountSid is required'); }
  if (!keySid) { throw new Error('keySid is required'); }
  if (!secret) { throw new Error('secret is required'); }
  options = options || {};
  this.accountSid = accountSid;

AccessToken - это конструктор, но вы вызываете его как обычную функцию.

const token = twilioAccessToken( 

Вам нужно использовать new

const token = new twilioAccessToken( 

Обычная нотация Javascript: если функция начинается с заглавной буквы, это намек на то, что это конструктор. Чтобы придерживаться этого стандарта, я бы сказал, что вы также хотите переименовать twilioAccessToken в TwilioAccessToken ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...