节点 --experimental-modules,请求的模块不提供名为的导出

2024-05-04

我已经安装了 Node 8.9.1(v10.5.0 中也出现同样的问题)。

我正在尝试在文件中使用来自 npm 包的命名导入.mjs

import { throttle } from lodash;

I run:

node --experimental-modules index.mjs

我得到:

SyntaxError:请求的模块“lodash”未提供名为“throttle”的导出 在 ModuleJob._instantiate (内部/modules/esm/module_job.js:80:21)

--experimental-modules应该是停止在 v10 LTS 中进行实验 http://2ality.com/2017/09/native-esm-node.html,那么为什么没有更多的模块作者加入这个行列呢?


编辑新的(更好的)答案

Node 团队……很慢。与此同时,为我们带来 Lodash 的同一个人(约翰·大卫·道尔顿饰)设想了一个杰出的解决方案,他的想法是 2019 年获得完整 ES6 模块支持的最佳方式。

(事实上​​,我want删除我之前的答案,但我将其保留用于历史目的。)

新的解决方案非常简单。

Step #1:

npm i esm

(https://www.npmjs.com/package/esm https://www.npmjs.com/package/esm欲了解包装详情)

Step #2:

node -r esm yourApp.js

这就是全部内容:真的就是这么简单。只需添加-r esm作为 Node 参数,一切都神奇地工作(它甚至比--experimental-modules!)谢谢约翰·大卫·道尔顿!

正如我在原来的回答中所说,大概somedayNode 最终将发布完整的 ES6 支持,但当这种情况发生时,采用它就像从一些脚本中删除“-r esm”一样简单:D

最后,为了给予应有的信任,虽然我没有通过他的答案找到它,但早在我进行此更新之前,@Divyanshu Rawat 实际上就提供了该库前身的答案。

原答案

--experimental-modules尚不支持命名导出:

--experimental-modules 不支持从 commonjs 模块导入命名导出(节点自己的内置模块除外)。

  • https://github.com/apollographql/graphql-tools/issues/913 https://github.com/apollographql/graphql-tools/issues/913

这就是您无法使用以下语法的原因:

 import { throttle } from 'lodash';

相反(至少现在)你必须破坏你需要的东西:

 import lodash from 'lodash';
 const { throttle } = lodash;

想必有一天 Node 将添加对所有 ES 模块功能的支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

节点 --experimental-modules,请求的模块不提供名为的导出 的相关文章

随机推荐

  • 杀死应用程序后,后台获取不起作用

    我正在尝试通过后台获取从 url 获取数据 我的函数尝试获取数据 如果有新数据 它会发送本地通知 当我最小化应用程序时 后台获取会在大约 10 20 分钟后开始工作 但是当我杀死该应用程序 双击主页按钮并关闭应用程序 时 它不起作用 我等了
  • 为什么正则表达式不能使用关键字而不是字符?

    好吧 我几乎不了解 RegEx 基础知识 但为什么他们不能将其设计为使用关键字 如 SQL 而不是一些神秘的通配符和符号呢 由于正则表达式是在运行时解释 解析的 所以是为了性能吗 未编译 或者也许是为了写作速度 考虑到当您学习一些 简单 字
  • 异步 lambda 到表达式>

    众所周知 我可以将普通的 lambda 表达式转换为Expression
  • 3D 数组如何在 C 中存储?

    据我所知 C 中的数组是按行优先顺序分配的 因此 对于 2 x 3 数组 0 1 2 3 4 5 存储在内存中为 0 1 2 3 4 5 但是 如果我有一个 2 x 3 x 2 数组怎么办 0 1 2 3 4 5 and 6 7 8 9 1
  • 从左到右显示 SVG 动画

    我有两个 SVG 图像 我想将它们设置为动画 如下所示 首先显示Full Screen文本从左到右 然后用第二个 SVG 覆盖该单词Screen显示整个第二个 SVG 因此 最后我将得到第二个 svg 中的单词 Full 黑色空间 以及单词
  • CSS位置绝对和全宽问题

    我想改变 dl 下面占据全屏宽度而不更改换行和包含它的标题元素 当我尝试定位 dl 元素 参见 problematic code 部分 下面 导航获取最大宽度为 1003px 的包装器的 100 我希望它在不改变换行和标题 div 的情况下
  • Unity-3d-5 将 16:9 的图像缩放至其他分辨率

    所以我创建了一个蛇游戏 其边框是用 2d 精灵创建的 我将游戏窗口设置为 16 9 在此分辨率下图像看起来不错 然而 扩展到其他任何东西开始让游戏看起来很奇怪 我想要调整游戏窗口的大小 如何让我的精灵根据当前分辨率拉伸和收缩 我已经尝试创建
  • VS Code 和 Flutter/Dart,小部件自动完成功能不起作用

    我正在使用一些教程来学习 Flutter 而我现在正在学习的教程则使用 VSCode 事实上 与 Android Studio 相比 我更喜欢它 因为它不会使我的 Macbook 过热 到目前为止 我唯一感到沮丧的是 有很多次自动完成功能停
  • 使用 Java 中的 JTextfield (Netbeans) 使用点分隔符使输入字段自动格式化数字

    我是 Java 新手 在我的第一个 Java 程序 使用 Netbeans 中 我想添加带有点 的输入字段自动格式编号 使用 JTextfield 分隔符 这是我的简短代码 private void PayTransKeyReleased
  • 私有子网中的EKS,公共子网中的负载均衡器

    我在私有子网中运行 EKS 因此无法创建面向互联网的负载均衡器 但能够创建内部负载均衡器 有什么方法可以在公共子网中创建负载均衡器 可能是手动 并指向私有子网中 EKS 中运行的 Pod 我正在考虑创建负载均衡器链 其中外部负载均衡器将指向
  • 是否可以从父线程访问/更新子线程的资源?

    我正在用 C 语言进行套接字编程 并且对多线程完全陌生 这是我的场景 我需要一个父线程从套接字读取数据 可以说 并将其排队到其子线程的队列中 这里的问题是 如何更新子线程的队列 具体来自父线程 支持多个生产者和消费者的线程安全队列 MtQu
  • mongodb 安装 - 要求?

    有人知道在 mongo 上安装标准 ubuntu 需要多少磁盘空间和内存吗 试图找出我的 VPS 需求 没有最低要求 但我不建议在与网络服务器相同的机器上运行 Mongo MongoDB 自动使用机器上的所有空闲内存作为其缓存 http d
  • RuntimeException 内容具有 id 属性“android.R.id.list_container”的视图,该视图不是 ViewGroup 类

    我仅在使用 Android 5 0 1 的华为设备上遇到此异常 Fatal Exception java lang RuntimeException Unable to start activity ComponentInfo net ex
  • 将复数名词转换为单数名词

    如何使用 R 将复数名词转换为单数名词 我使用 tagPOS 函数来标记每个文本 然后提取所有标记为 NNS 的复数名词 但是如果我想将这些复数名词转换为单数该怎么办 library openNLP library tm acq o lt
  • 跳过痛苦的 Core Data 迁移并迁移到新的数据模型

    当我什至不关心旧数据时 我花费了大量时间将核心数据整理到新的迁移中 有没有一种方法可以删除所有现有数据并跳转到新的数据模型 而不是每次更改数据模型时都处理映射模型的麻烦 是的 只需删除商店文件并重新创建即可 我经常 至少在开发过程中 让我的
  • PrimeFaces 扩展 - 空值属性

    在我的页面上 我有
  • 在发生自调整大小之前,如何准确地为 UICollectionViewLayout 提供矩形中的元素?

    我在用着UICollectionView构建可以在网格或垂直列表布局中显示元素的 UI UICollectionViewFlowLayout不能很好地适应全角列表布局 所以我正在编写自己的UICollectionViewLayout子类 并
  • 如何在 Mac 上的 Safari 中删除所选元素的光泽?

    在 Mac 和 iOS 设备上的 Safari 中
  • 如何使用 ClickOnce 安装 COM

    我已经安装了使用 TeeChart ActiveX COM 使用 ClickOnce 绘制图表的组件 如果我使用 regsvr32 teechart8 ocx 手动注册 TeeChart 我的 应用程序工作正常 但我想要并且需要使用安装应用
  • 节点 --experimental-modules,请求的模块不提供名为的导出

    我已经安装了 Node 8 9 1 v10 5 0 中也出现同样的问题 我正在尝试在文件中使用来自 npm 包的命名导入 mjs import throttle from lodash I run node experimental mod