2012-05-22 11 views
14

コンソールでノードを実行し、var _ = require('underscore');と入力すると、_は未定義となります。同じコードをファイルに入れて実行すると、アンダースコアライブラリが期待通りにインクルードされます。node.js REPLで実行するとrequire( 'アンダースコア')が未定義で返されるのはなぜですか?

$ 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], 
... 
> 

しかしnode test.jsとして実行.jsファイル内の同じコードは予想通り、両方のライブラリがロード示します。どうしたの?

答えて

30

ノードreplは、最後に評価された入力の値に_をバインドします。これは_バインディングをvar _ = ...;に上書きします。またthe node.js documentation on the replを参照してください。

これは、例えば、関係なく...に取って代わるものを真ではありません:

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

これは狂気私を運転していました! –

+0

それは私にも夢中になっていた。私はこの答えがlodashとアンダースコアに当てはまることを言及したいと思います。 –

関連する問題