Javascript 节点14 ECMAScript模块和包

Javascript 节点14 ECMAScript模块和包,javascript,node.js,Javascript,Node.js,对于节点对ECMAScript模块的本机支持,它们声明 有三种类型的说明符: 简单的说明符,如“some package”或“some package/shuffle”。它们可以通过包名引用包的主入口点,或者根据示例分别引用以包名为前缀的包内的特定功能模块。只有没有“导出”字段的包才需要包含文件扩展名 裸说明符的定义表明您可以从“包”导入ECMAScript模块 Node.js中的“包”是什么?节点是否只是用PACKAG.JSON文件搜索整个代码> NoDEYMease[/COD>文件夹],

对于节点对ECMAScript模块的本机支持,它们声明

有三种类型的说明符:

  • 简单的说明符,如“some package”或“some package/shuffle”。它们可以通过包名引用包的主入口点,或者根据示例分别引用以包名为前缀的包内的特定功能模块。只有没有“导出”字段的包才需要包含文件扩展名
  • 裸说明符的定义表明您可以从“包”导入ECMAScript模块

    Node.js中的“包”是什么?节点是否只是用PACKAG.JSON文件搜索整个代码> NoDEYMease[/COD>文件夹],并考虑一个包?还是比这更复杂?CommonJS模块和ESMAScript模块是否相同

    Node.js中的“包”是什么

    在ESM的“裸”命名包的意义上,与节点内置包匹配的任何名称,或位于当前目录或后续任何父目录的
    node_modules/{{bare name}}
    中,该目录具有加载的
    package.json
    ,并且具有正确的
    name
    字段

    节点是否只是用PACKAG.JSON文件搜索整个NoDEYMe饰件文件夹中的任何文件夹,并考虑一个包?还是比这更复杂

    基本上,节点并不关心任何您尚未命名为导入的内容。它总是更复杂,算法被记录在案

    CommonJS模块和ESMAScript模块是否相同

    否,尽管解决程序包导出的部分在“程序包”定位并由or审查后共享)。巨大的差异是

    • ESM中不考虑全局
      节点\ u模块
      (即遍历
      $node\ u路径
      $HOME
      和节点
      $PREFIX
    在加载此子集或“裸名称”的过程之外,还有更多的差异

    • ESM模块或
      mjs
      文件将不会通过
      require
      加载
    • 没有本机或JSON导入

    通常,ESM加载程序是CommonJS的一个更严格的子集,因为任何特定于节点的内容都不适用。

    +1谢谢@evert——不过,该文档似乎是针对通过require加载的CommonJS模块的。我对通过导入加载的ECMAScript模块感兴趣。我已经更新了我的问题,使这一点更清楚。足够公平!一个包可能只是
    node\u modules
    中的一个目录。但是,我假设您正在寻找我没有的参考资料。@Evert ESM版本: