将 Underscore 模块与 Node.js 结合使用
我一直在学习 Node.js 和模块,但似乎无法让 Underscore 库正常工作...似乎我第一次使用 Underscore 中的函数时,它会覆盖 _ 对象,结果为我的函数调用。有人知道发生了什么事吗?例如,这是来自 node.js REPL 的会话:
Admin-MacBook-Pro:test admin$ node
> require("./underscore-min")
{ [Function]
_: [Circular],
VERSION: '1.1.4',
forEach: [Function],
each: [Function],
map: [Function],
inject: [Function],
(...more functions...)
templateSettings: { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g },
template: [Function] }
> _.max([1,2,3])
3
> _.max([4,5,6])
TypeError: Object 3 has no method 'max'
at [object Context]:1:3
at Interface.<anonymous> (repl.js:171:22)
at Interface.emit (events.js:64:17)
at Interface._onLine (readline.js:153:10)
at Interface._line (readline.js:408:8)
at Interface._ttyWrite (readline.js:585:14)
at ReadStream.<anonymous> (readline.js:73:12)
at ReadStream.emit (events.js:81:20)
at ReadStream._emitKey (tty_posix.js:307:10)
at ReadStream.onData (tty_posix.js:70:12)
> _
3
当我自己制作 Javascript 文件并导入它们时,它们似乎工作正常。也许 Underscore 库有什么特别之处?
I've been learning about node.js and modules, and can't seem to get the Underscore library to work properly... it seems that the first time I use a function from Underscore, it overwrites the _ object with the result of my function call. Anyone know what's going on? For example, here is a session from the node.js REPL:
Admin-MacBook-Pro:test admin$ node
> require("./underscore-min")
{ [Function]
_: [Circular],
VERSION: '1.1.4',
forEach: [Function],
each: [Function],
map: [Function],
inject: [Function],
(...more functions...)
templateSettings: { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g },
template: [Function] }
> _.max([1,2,3])
3
> _.max([4,5,6])
TypeError: Object 3 has no method 'max'
at [object Context]:1:3
at Interface.<anonymous> (repl.js:171:22)
at Interface.emit (events.js:64:17)
at Interface._onLine (readline.js:153:10)
at Interface._line (readline.js:408:8)
at Interface._ttyWrite (readline.js:585:14)
at ReadStream.<anonymous> (readline.js:73:12)
at ReadStream.emit (events.js:81:20)
at ReadStream._emitKey (tty_posix.js:307:10)
at ReadStream.onData (tty_posix.js:70:12)
> _
3
When I make Javascript files myself and import them, they seem to be working properly. Maybe there's something special with the Underscore library?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
从今天开始(2012 年 4 月 30 日),您可以像往常一样在 Node.js 代码上使用 Underscore。之前的评论是正确的,REPL 接口(Node 的命令行模式)使用“_”来保存最后的结果,但是您可以在代码文件上自由使用它,并且通过执行标准,它将毫无问题地工作:
As of today (April 30, 2012) you can use Underscore as usual on your Node.js code. Previous comments are right pointing that REPL interface (Node's command line mode) uses the "_" to hold the last result BUT on you are free to use it on your code files and it will work without a problem by doing the standard:
Node REPL 使用下划线变量来保存上次操作的结果,因此它与 Underscore 库对同一变量的使用发生冲突。尝试这样的事情:
The Node REPL uses the underscore variable to hold the result of the last operation, so it conflicts with the Underscore library's use of the same variable. Try something like this:
或者 :
Or :
node.js
REPL 用于保存先前输入的名称_
。选择另一个名称。The name
_
used by thenode.js
REPL to hold the previous input. Choose another name.注意:以下内容仅适用于下一行代码,并且只是由于巧合。
对于 Lodash,
没有
var _ = require('lodash')
因为 Lodash 很神秘需要时全局设置该值。Note: The following only works for the next line of code, and only due to a coincidence.
With Lodash,
No
var _ = require('lodash')
since Lodash mysteriously sets this value globally when required.