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

时间:2011-09-26 01:04:55

标签: 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); });

我明白了:

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)

当我像这样运行时,还有一点奇怪:

node underscore.js library-tests.js

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

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

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

1 个答案:

答案 0 :(得分:7)

尝试分配它:

var _ = require('../underscore.js');

您可以在annotated source code中看到下划线将将其自身添加到全局命名空间(如果它在CommonJS实现中运行,其中Node.JS为1)。