2012-05-22 10 views
14

Cuando ejecuto un nodo en mi consola y escribo var _ = require('underscore');, _ termina indefinido. Si pongo el mismo código en un archivo y lo ejecuto, la biblioteca de guiones bajos se incluye como se esperaba.¿Por qué requiere ('subrayado') devolver indefinido cuando se ejecuta en 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], 
... 
> 

Pero el mismo código en un archivo .js ejecutado como node test.js muestra las dos bibliotecas de carga como se esperaba. ¿Que esta pasando?

Respuesta

30

El Node repl vincula _ al valor de la última entrada evaluada; que sobrescribe su enlace _ en var _ = ...;. También vea the node.js documentation on the repl.

Esto es cierto sin importar lo reemplaza ..., por ejemplo:

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

esto me estaba volviendo loco! –

+0

También me estaba volviendo loco. Quiero mencionar que esta respuesta se aplica tanto a lodash como a guiones bajos. –

Cuestiones relacionadas