Использование модуля 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: //g, interpolate: //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. (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. (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?

    Узел REPL использует переменную подчеркивания, чтобы удерживать результат последней операции, поэтому она конфликтует с использованием библиотеки Underscore одной и той же переменной. Попробуйте что-то вроде этого:

     Admin-MacBook-Pro:test admin$ node > _und = 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] } > _und.max([1,2,3]) 3 > _und.max([4,5,6]) 6 

    На сегодняшний день (30 апреля 2012 года) вы можете использовать Underscore, как обычно, в вашем коде Node.js. Предыдущие комментарии правы указывают, что интерфейс REPL (режим командной строки Node) использует «_» для хранения последнего результата, но вы можете использовать его в своих файлах кода, и он будет работать без проблем, выполнив стандарт:

     var _ = require('underscore'); 

    Счастливое кодирование!

    Или :

      var _ = require('underscore')._; 

    Имя _ используемое node.js REPL для хранения предыдущего ввода. Выберите другое имя.

    Примечание. Следующее работает только для следующей строки кода и только из-за совпадения.

    С Lodash,

     require('lodash'); _.isArray([]); // true 

    Нет var _ = require('lodash') поскольку Lodash загадочно устанавливает это значение глобально, когда это необходимо.

    Давайте будем гением компьютера.