【问题标题】:Nodejs trim() is not a functionNodejs trim() 不是函数
【发布时间】:2021-02-09 07:20:52
【问题描述】:

我在运行时收到此错误,但似乎无法解决。

TypeError: data[key].trim is not a function

功能就是这个

const generateSignature = (data, passPhrase = null) => {
  // Create parameter string
  let pfOutput = "";
  for (let key in data) {
    if (data.hasOwnProperty(key)) {
      if (data[key] !== "") {
        pfOutput += `${key}=${encodeURIComponent(data[key].trim()).replace(
          /%20/g,
          " + "
        )}&`;
      }
    }
  }

  // Remove last ampersand
  let getString = pfOutput.slice(0, -1);
  if (passPhrase !== null) {
    getString += `&passphrase=${encodeURIComponent(passPhrase.trim()).replace(
      /%20/g,
      "+"
    )}`;
  }

  return crypto.createHash("md5").update(getString).digest("hex");
};

我不知道如何解决这个问题

【问题讨论】:

  • 发生错误时data[key]的值是多少?它似乎不是一个字符串,但我们可以满怀信心地说。除了错误消息所说的内容之外,没有任何信息。修复它的方法是避免在非字符串上调用字符串方法 -​​ 要么避免使用非字符串,要么在修剪和替换时跳过它们。我不知道这里的目标是什么。
  • 你运行的是哪个版本的 Node.js,以防万一?
  • 我使用的是 npm 5.6.0 版本
  • npm 与 node 有不同的版本。它们是两个不同的应用程序。试试node --version
  • 节点版本为v15.8.0

标签: javascript node.js trim


【解决方案1】:

我认为data[key] 有可能不是字符串类型。

试试这个:

if(data[key] !== "") 更改为if(typeof data[key] === "string")

【讨论】:

    【解决方案2】:

    trim() 仅适用于字符串。像这样将整数值转换为字符串。其中 x 是整数值,将其包裹在 ${x}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-03
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 2020-07-12
      • 2020-07-14
      相关资源
      最近更新 更多