这在没有将lodash安装为依赖项的情况下有效:
const _ = require('lodash');
_.each([1,2,3],console.log);
(不,我没有在全球安装lodash)
我在某处看到像nodejs这样的东西在默认情况下支持lodash,但是现在我找不到关于此的任何文档。 最终是真的吗?我在哪里可以读到它?
P.S。最终,我在主目录中找到并删除了node_modules,所有的魔术消失了,现在此脚本由于缺少依赖项而产生错误。谢谢你们在这次调查中的帮助。
答案 0 :(得分:3)
不是。开箱即用100K+
lib并假定它会被开发人员使用是没有任何意义的。例如,考虑this Repl example
它将执行节点环境 ,并将安装require
语句中指定的所有软件包。如果未提供任何内容,则仅是简单的node
而已。
开箱即用,您会得到_ is not defined
。但是添加const _ = require('lodash')
的那一刻,auto-install
就会为您所用,您将获得理想的结果。 因此,为方便起见,此操作由Repl工具完成,因此您不必进行npm install ...
等操作。但是开箱即用的节点未与lodash打包。 / p>
在ES6中也不再有大量的lodash用例了,一旦ES6得到广泛支持,关于lodash的浏览器兼容性的争论也就没有多大关系了。因此,将其与节点捆绑甚至更毫无意义。
但是有趣的是,节点回购中包含为npm
的{{1}}具有dependencies on lodash:)。
答案 1 :(得分:3)
我认为Akrion所说的话部分正确(不再需要lodash,默认情况下lodash不再是node的一部分)。
我对它为什么起作用的猜测是,您有一个必需的库,而该库又依赖于lodash,并且您使用的任何捆绑程序都以这种方式进行选择。
在这里我可能会冒险说,如果您打开node_modules文件夹,lodash就坐在那儿。遍历您的package.lock文件(或yarn lock文件),看看其中包括lodash。
编辑 通过评论发现,主目录中有一个node_modules文件夹
答案 2 :(得分:2)
该库未内置在节点中。您可以查看内置模块的完整列表@