命令行node.js; 用模块运行脚本

jav*_*y79 2 javascript node.js

我正在使用node.js和几个模块\库进行一些测试.为简单起见,我将重点关注underscore.js.

当我使用以下源运行node.exe时:

require("./underscore.js");
_.each({one : 1, two : 2, three : 3}, function(num, key){ console.log(num); });
Run Code Online (Sandbox Code Playgroud)

我明白了:

C:\Dropbox\personal-work\foo\test code>node library-tests.js

node.js:208
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
ReferenceError: _ is not defined
    at Object.<anonymous> (C:\Dropbox\personal-work\foo\test code\library-tests.js:2:1)
    at Module._compile (module.js:425:26)
    at Object..js (module.js:443:10)
    at Module.load (module.js:344:31)
    at Function._load (module.js:303:12)
    at Array.<anonymous> (module.js:463:10)
    at EventEmitter._tickCallback (node.js:200:26)
Run Code Online (Sandbox Code Playgroud)

同样奇怪的是,当我像这样运行时:

node underscore.js library-tests.js

它似乎根本没有做任何事情......我甚至添加了日志语句,它们似乎没有执行.

我也尝试将underscore.js源代码粘贴到我的源代码顶部,我得到同样的错误......

有谁知道我在这里做错了什么?谢谢.

nic*_*ckf 7

尝试分配它:

var _ = require('../underscore.js');
Run Code Online (Sandbox Code Playgroud)

您可以在带注释的源代码中看到,如果下划线在CommonJS实现(其中Node.JS为1)中运行,则下划线不会将自身添加到全局命名空间.