2012-05-22 9 views
14

Quando si esegue il nodo nella mia console e si digita var _ = require('underscore');, _ non è definito. Se inserisco lo stesso codice in un file e lo eseguo, la libreria di sottolineatura viene inclusa come previsto.Perché require ('underscore') restituisce undefined quando viene eseguito su 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], 
... 
> 

Ma lo stesso codice in un file .js eseguito come node test.js mostra entrambe le librerie di caricare come previsto. Cosa sta succedendo?

risposta

30

Il nodo repl associa _ al valore dell'ultimo input valutato; che sovrascrive il binding _ in var _ = ...;. Vedi anche the node.js documentation on the repl.

questo è vero non importa quale sostituisce ..., ad esempio:

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

questo mi stava facendo impazzire! –

+0

Anche a me faceva impazzire. Voglio menzionare che questa risposta si applica a lodash e sottolineatura. –

Problemi correlati