2012-05-22 13 views
14

Po uruchomieniu węzła w konsoli i wpisaniu nazwy var _ = require('underscore');, _ kończy się niezdefiniowaniem. Jeśli wstawię ten sam kod do pliku i wykonam go, biblioteka podkreślników zostanie dołączona zgodnie z oczekiwaniami.Dlaczego require ('podkreślenie') zwraca undefined po wykonaniu w node.js REPL?

$ node 
> var _ = require('underscore'); 
> console.log(_) 
undefined // underscore library does not load 
> var async = require('async'); 
undefined 
> console.log(async) // async library does 
{ noConflict: [Function], 
    nextTick: [Function], 
    forEach: [Function], 
... 
> 

Ale ten sam kod w pliku .js wykonywany jako node test.js pokazuje obie biblioteki ładowania, jak oczekiwano. Co się dzieje?

Odpowiedz

30

repl Węzeł łączy _ do wartości ostatniego ocenianego sygnału wejściowego; które nadpisuje twoje powiązanie _ w var _ = ...;. Zobacz także the node.js documentation on the repl.

To prawda, bez względu na to, co zastępuje ..., na przykład:

$ node 
> var _ = "any value"; 
undefined 
> _ 
undefined 
+3

zostało to doprowadza mnie do szału! –

+0

To też doprowadzało mnie do szaleństwa. Chcę nadmienić, że ta odpowiedź dotyczy zarówno zła, jak i podkreślenia. –

Powiązane problemy