webentwicklung-frage-antwort-db.com.de

Verwenden des Underscore-Moduls mit Node.js

Ich habe etwas über node.js und Module gelernt und kann die Underscore-Bibliothek anscheinend nicht richtig zum Laufen bringen. Wenn ich zum ersten Mal eine Funktion aus Underscore verwende, wird das _-Objekt mit dem Ergebnis von überschrieben mein Funktionsaufruf. Weiß jemand, was los ist? Hier ist zum Beispiel eine Sitzung von 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

Wenn ich selbst Javascript-Dateien erstelle und importiere, funktionieren sie anscheinend einwandfrei. Vielleicht hat die Underscore-Bibliothek etwas Besonderes?

145
Geoff

Der Node REPL verwendet die Unterstreichungsvariable, um das Ergebnis der letzten Operation zu speichern. Dies steht also in Konflikt mit der Verwendung derselben Variablen durch die Unterstreichungsbibliothek Dies:

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
168
Mike Scott

Ab heute (30. April 2012) können Sie Unterstrich wie gewohnt für Ihren Node.js-Code verwenden. Frühere Kommentare weisen darauf hin, dass REPL interface (Node's Command Line Mode) das "_" verwendet, um das letzte Ergebnis zu speichern, ABER Sie können es für Ihre Codedateien verwenden und es funktioniert ohne Ein Problem bei der Ausführung des Standards:

var _ = require('underscore');

Viel Spaß beim Codieren!

193

Oder :

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

Der Name _ verwendet von node.js REPL, um die vorherige Eingabe zu speichern. Wählen Sie einen anderen Namen.

13
dkiyatkin