gpt4 book ai didi

node.js - Node --experimental-modules,请求的模块不提供名为的导出

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:51 24 4
gpt4 key购买 nike

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

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

import { throttle } from lodash;

我跑:

node --experimental-modules index.mjs

我得到:

SyntaxError: The requested module 'lodash' does not provide an export named 'throttle' at ModuleJob._instantiate (internal/modules/esm/module_job.js:80:21)

--experimental-modules 应该是 stop being experimental in v10 LTS ,那么为什么没有更多的模块作者加入这个行列呢?

最佳答案

编辑新的(而且更好)答案

Node 团队……很慢。与此同时,为我们带来 Lodash 的同一个人(John-David Dalton)设想了一个绝妙解决方案,他的想法是在 2019 年获得完整 ES6 模块支持的最佳方式。

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

新的解决方案非常简单。

第 1 步:

npm i esm

(https://www.npmjs.com/package/esm 有关包裹详细信息)

第 2 步:

node -r esm yourApp.js

这就是全部内容:真的就是这么简单。只需添加 -r esm 作为 Node arg,一切都会神奇地工作(它甚至比 --experimental-modules 还要少打字!)谢谢 John-David Dalton! !

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

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

原始答案

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

--experimental-modules doesn't support importing named exports from a commonjs module (except node's own built-ins).

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

 import { throttle } from 'lodash';

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

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

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

关于node.js - Node --experimental-modules,请求的模块不提供名为的导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59707647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com