为什么我不能在Node.js shell中使用模块?

时间:2015-07-30 14:39:15

标签: javascript node.js shell

英文

当我尝试在Node.js shell中使用require加载模块来玩它时,我得到了一些意想不到的结果(而不是编写脚本并使用Node运行它)。例如,在脚本中,我可以这样做:

var _ = require('grunt');
grunt.registerTask(/* ...*/);

这很好用。但是当我尝试在Node.js shell中执行此操作时,它首先找不到该模块,除非我指定node_modules目录,然后调用其中一个模块'方法只能在停止之前工作一次。

在Tech-Speake中

在当前目录中,我有以下子目录:

- node_modules
  - lodash
  - grunt

现在我想使用其中一个已安装的库来使用Node.js shell:

$ node
> var _ = require('lodash');
undefined

> _ = require('./node_modules/lodash');
// Long output of function list

现在,如果我尝试使用lodash,它会运行一次然后停止,我必须再次导入它:

_.reduce(/* ... */); //Works
_.reduce(/* ... */); // TypeError: Cannot call method 'reduce' of undefined

1 个答案:

答案 0 :(得分:12)

_因为var名称不起作用,因为Node使用它来保存最后一次操作的结果。尝试类似:

> var l = require('lodash'); 
> l.reduce(/* ... */);