【问题标题】:TypeError undefined is not a functionTypeError undefined 不是函数
【发布时间】:2018-12-11 00:58:16
【问题描述】:

您好,我正在尝试调用一个返回字符串的函数,一旦获得该字符串,我就想执行一些操作。但我收到一个错误TypeError: undefined is not a function (evaluating'(0, _cryptoUtil.encryptString) (token).then

this.savePerishableTokenInSharedPrefs(res.perishableToken);

  savePerishableTokenInSharedPrefs = ( token ) => {
    const returned = encryptString(token).then((encryptedToken) => {
      //save the token
    })
    .catch(err => {
      consoleLog('error -' + err);
    });
  }

cryptoUtils.js

export function encryptString (encryptMe) {
    var CryptoJS = require("crypto-js");
    // Encrypt
    var encryptedText = CryptoJS.AES.encrypt(encryptMe, globals.ENCRYPTION_KEY);
    consoleLog('encryptString - ' + encryptedText + ' pin - ' + encryptMe );
    return encryptedText;
}

我在这里缺少任何基本的东西吗?

谢谢 回复

【问题讨论】:

  • "encryptStrint" 在错误消息中,但不在此处。闻起来像错字。
  • CryptoJS.AES.encrypt 是否返回承诺?

标签: javascript reactjs react-native promise


【解决方案1】:

您似乎希望 encryptString 返回一个承诺,但实际上返回的是一个字符串。

试试这个:

export function encryptString (encryptMe) {
    var CryptoJS = require("crypto-js");
    // Encrypt
    var encryptedText = CryptoJS.AES.encrypt(encryptMe, globals.ENCRYPTION_KEY);
    consoleLog('encryptString - ' + encryptedText + ' pin - ' + encryptMe );

    return Promise.resolve(encryptedText);
}

【讨论】:

    【解决方案2】:

    我不确定encryptString 函数应该是异步的。根据crypto-js on github,您可以在返回值上使用toString() 并使用类似的结果

      savePerishableTokenInSharedPrefs = ( token ) => {
        try {
           const encryptedToken = encryptString(token);
           //save the token
        } catch(e => {
          consoleLog('error -' + e);
        };
      }
    

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 2016-05-18
      • 2012-10-06
      • 2016-01-05
      • 1970-01-01
      • 2012-02-03
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多