Javascript 为什么可以';我需要Node.js shell中的模块吗?

Javascript 为什么可以';我需要Node.js shell中的模块吗?,javascript,node.js,shell,Javascript,Node.js,Shell,用英语 当我尝试在Node.js shell中使用require加载模块来处理它时,我得到了一些意想不到的结果(而不是编写脚本并使用Node运行该脚本)。例如,在脚本中,我可以执行以下操作: var _ = require('grunt'); grunt.registerTask(/* ...*/); 这个很好用。但是,当我尝试在Node.js shell中执行此操作时,它首先无法找到模块,除非我指定Node\u modules目录,然后调用其中一个模块的方法只在停止之前工作一次 在技术演讲中

用英语

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

var _ = require('grunt');
grunt.registerTask(/* ...*/);
这个很好用。但是,当我尝试在Node.js shell中执行此操作时,它首先无法找到模块,除非我指定
Node\u modules
目录,然后调用其中一个模块的方法只在停止之前工作一次

在技术演讲中

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

- 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

因为变量名不起作用,因为节点使用它来保存上次操作的结果。尝试以下方法:

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

谢谢我没有意识到!我想知道为什么我能够在一个书面脚本中调用它,那么.@a.Duff
\uu
只包含REPL中先前操作的结果。这在剧本中没有多大意义;如果需要访问结果,可以将其分配给某个对象。