【问题标题】:Does Buffer have a compare method?Buffer 有比较方法吗?
【发布时间】:2016-04-17 10:00:33
【问题描述】:

我正在阅读 NodeJS 教程,我已经到达 this 页面。

Buffer对象的比较方法有一个示例代码:

var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);

if(result < 0) {
   console.log(buffer1 +" comes before " + buffer2);
}else if(result == 0){
   console.log(buffer1 +" is same as " + buffer2);
}else {
   console.log(buffer1 +" comes after " + buffer2);
}

抛出这个:

执行程序.... $node main.js

/web/com/1460883529_55644/main.js:3 var 结果 = buffer1.compare(buffer2);

^ 类型错误:对象 ABC 在对象处没有“比较”方法。 (/web/com/1460883529_55644/main.js:3:22)

在 Module._compile (module.js:456:26)

在 Object.Module._extensions..js (module.js:474:10)

在 Module.load (module.js:356:32)

在 Function.Module._load (module.js:312:12)

在 Function.Module.runMain (module.js:497:10)

在启动时 (node.js:119:16)

在 node.js:929:3

奇怪的是,在跟踪中对象被称为ABC 而不是buffer1,并且根据跟踪没有compare 方法。试图澄清compare 方法的示例让我感到困惑。谁能解释一下这里发生了什么?

【问题讨论】:

  • 你的节点版本是多少?
  • 我正在通过问题中指定的教程的服务器运行代码(tutorialspoint.com/nodejs/nodejs_buffers.htm
  • 它正在运行 Node v0.10.32
  • 是的,这种方法要到 0.12 才能使用
  • 我明白了,所以教程中犯的错误是使用了他们使用的版本中不存在的方法。您能否将其发布为答案以及可以找到添加给定方法的版本的位置?我稍后会接受,因为现在我必须走了:)

标签: node.js


【解决方案1】:

那个教程站点使用的 Node v0.10 非常老,甚至不支持教程本身使用的方法!

该代码在 Node 的当前版本 v4.4.3 以及任何其他最新版本中运行良好。 compare() 的相关文档在这里:https://nodejs.org/api/buffer.html#buffer_buf_compare_otherbuffer

顺便说一句,您可能希望停止使用new Buffer(),转而使用更新的Buffer.from() API。据说这样可以提高代码安全性。

【讨论】:

  • 我正在通过这里的教程运行代码:Node v0.10.32,如果您单击尝试它,您将看到使用了 Node v0.10.32 并遇到错误。由于这显然不是本教程的意图,因此我提出了问题。
  • @LajosArpad:看起来您使用的是非常旧的 Node.js 版本。但我在您的评论中没有看到任何可点击的链接。我建议更新到当前版本的 Node。
  • 约翰,我假设您已经看到了我的问题 (tutorialspoint.com/nodejs/nodejs_buffers.htm) 中的链接。我正在通过教程网站运行代码,实际上我在实际决定是否值得使用 NodeJS 之前正在阅读有关 NodeJS 的信息。由于教程使用的是那个版本,我真的很好奇他们怎么能放一个不起作用的例子。 Hassansin 告诉我,该方法是在 0.12 版本中添加的,这意味着他们弄错了版本。所以我的问题的真正答案是:他们错误地在教程中使用了比需要的旧版本。
  • @LajosArpad:明白。我已经更新了我的答案,添加了一个关于该教程网站是如何被破坏的句子。我猜你不能依赖那个网站上的“试用”按钮,除非他们更新了他们的 Node 版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
  • 1970-01-01
相关资源
最近更新 更多