我正在使用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源代码粘贴到我的源代码顶部,我得到同样的错误......
有谁知道我在这里做错了什么?感谢。
答案 0 :(得分:7)
尝试分配它:
var _ = require('../underscore.js');
您可以在annotated source code中看到下划线将不将其自身添加到全局命名空间(如果它在CommonJS实现中运行,其中Node.JS为1)。