Node.js lodash是否内置于节点中?

Node.js lodash是否内置于节点中?,node.js,dependencies,lodash,Node.js,Dependencies,Lodash,这在没有lodash作为依赖项安装的情况下工作: const _ = require('lodash'); _.each([1,2,3],console.log); (不,我没有在全球安装lodash) 我在某个地方看到nodejs默认支持lodash,但现在我找不到任何关于这方面的文档。 这最终是真的吗?我在哪里可以读到它 最后,我在我的主目录中找到并删除了node_模块,所有的魔法都消失了,现在这个脚本产生了一个缺少依赖项的错误。谢谢你们在调查中的帮助 库未内置到节点中。您可以查看内置模块

这在没有lodash作为依赖项安装的情况下工作:

const _ = require('lodash');
_.each([1,2,3],console.log);
(不,我没有在全球安装lodash)

我在某个地方看到nodejs默认支持lodash,但现在我找不到任何关于这方面的文档。 这最终是真的吗?我在哪里可以读到它


最后,我在我的主目录中找到并删除了node_模块,所有的魔法都消失了,现在这个脚本产生了一个缺少依赖项的错误。谢谢你们在调查中的帮助

库未内置到节点中。您可以查看内置模块的完整列表@


不太可能。捆绑开箱即用
100K+
lib并假设开发人员将使用它是没有多大意义的。例如考虑

它将创建一个节点环境将安装
require
语句中指定的任何软件包。如果没有提供,它只是一个普通的
节点
,没有其他内容

正如您可以看到的那样,您将得到未定义的
。但是当您添加
const=require('lodash')
时,它将为您自动安装
lodash,您将获得所需的结果因此,这是由Repl工具为方便而完成的因此您不必执行
npm安装…
等操作。但是开箱即用的节点没有与lodash打包

同样,对于ES6,大量的lodash用例不再存在,一旦ES6得到广泛支持,关于lodash浏览器兼容性的争论也就不再重要了。因此,将其与node捆绑在一起,甚至都没有意义


然而有趣的是,节点回购中包含的
npm
作为
deps
已经:)。

我认为Akrion所说的部分正确(不再需要lodash,默认情况下lodash不是节点的一部分)

我猜它为什么会起作用,是因为你有一个必需的库,而这个库又依赖于lodash,而你使用的任何绑定器都是这样挑选出来的

我想冒昧地猜测一下,如果你打开你的node_modules文件夹,lodash就在那里。在package.lock文件(或纱线锁定文件)中进行一次压缩,查看包含lodash的内容

编辑
通过评论发现,主目录中有一个node_modules文件夹

,那么为什么我的问题中的代码有效呢?可能npm在没有明确请求的情况下预加载了它?是否有关于此自动安装功能的文档?哪些软件包可以或不能以这种方式使用?将来会得到支持吗?不在package.json中列出lodash安全吗?尤其是在开发另一个依赖于lodash的包的情况下。您应该在模块中明确说明您的依赖关系。不要依赖于假设lodash是/将是/应该是节点的一部分。我太想听到这个“自动安装”功能了-我从来没有听说过it@Chris我想如果我的回答与
自动安装
功能相关,我可能没有做好。
Repl工具
中存在的一个自动安装,因为它检测到依赖项,但它是一个web环境。所以它这样做是为了方便。开箱即用的node是我的竞争。我只是在任何项目之外创建了测试脚本,那里没有node_模块,但现在我怀疑是否有一些在父节点中。需要调查。在任何项目之外的测试脚本中-你是说你仍然可以导入lodash??如果是这样,你100%确定你没有在全球范围内安装它吗?是的,我的问题中的脚本可以正常工作,没有任何npm摩擦。但是现在在我的主目录中看到node_模块,并且安装了lodash,所以我可能是在一段时间前错误地安装了它。我把它删掉了,所有的lodash魔法都消失了。哈哈,这不是一个让人头疼的问题吗!我写了一个缺少lodash dep的包,它已经安装了几百次了——没有人抱怨缺少依赖性。现在说不再需要lodash还为时过早。