为啥我不能在汇总配置文件中使用 ES6 导入/导出?

Posted

技术标签:

【中文标题】为啥我不能在汇总配置文件中使用 ES6 导入/导出?【英文标题】:Why can't I use ES6 import/export in Rollup config files?为什么我不能在汇总配置文件中使用 ES6 导入/导出? 【发布时间】:2020-06-18 05:25:23 【问题描述】:

在汇总文档中,有一个基本教程可以帮助您创建第一个包。有一个说明:

注意:汇总本身处理配置文件,这就是我们能够 使用导出默认语法——代码没有被转译 Babel 或类似的东西,所以你只能使用 ES2015 的特性 在您运行的 Node.js 版本中受支持。

我讨厌当我很好地遵循某件事然后到达我不完全理解的一两句话时。这个 sn-p 就是这种情况。

教程示例显示我可以使用 ES6 模块语法编写配置。 “Rollup 本身处理配置文件”,这是一个精确的陈述还是仅仅意味着 Rollup 在幕后做了一些事情? “代码没有被转译”,“您只能使用您正在使用的节点版本支持的 ES2015 功能”,这是否意味着 Rollup 正在使用节点来处理配置文件?但我认为 node 还不支持 ES6 模块。

有人能以更精确的方式解释这个 sn-p,并准确详尽地说明它的含义吗?

【问题讨论】:

这只是意味着 Rollup 手动解析配置文件,而不使用任何花哨的 node.js 功能或像 Babel 这样的转译器。因此,Rollup 对导出语法的支持由其程序员硬编码到 rollup 中(同样,不依赖于任何 javascript 功能,Rollup 可以用 php 编写,它仍然支持导出语法,因为 Rollup 的程序员编写了代码来解析它) .但是,任何来自 ES6 的其他功能,例如类和解构,都需要您使用 Node.js 或支持它的转译器,因为 Rollup 的开发人员没有为它编写代码 我认为“自身进程”的非正式意思很清楚,“嘿,我是编写 Rollup 的人,我编写代码来读取文件中的每个字节,我手动和亲自编写代码手动解析” 感谢您的解释。我认为这些东西是隐含的,但并不是每个人都能始终理解隐含的内容,尤其是在实施方面。 【参考方案1】:

实际上,Rollup 确实在执行之前将配置文件转换为 commonjs 格式。它只是不将其保存到文件中,而是将其保存在内存中。

它将所有imports 转换为requires。

如果您在调试器中运行汇总,您可以轻松看到它。

您必须在rollup.config.js 文件的开头设置断点。启动调试器并等到在断点处停止,然后您将看到生成的rollup.config.js 的内存副本的源代码,而不是原始的。

【讨论】:

以上是关于为啥我不能在汇总配置文件中使用 ES6 导入/导出?的主要内容,如果未能解决你的问题,请参考以下文章

为啥heidisql 我的表明不能在库名下面显示

ES6模块化

如何使用 React + ES6 + webpack 导入和导出组件?

为啥我的access不能导入excel中的数据

为啥使用Mysql命令source导入.sql文件时总是出错?

如何在 JSON 文件中导出对象数组,然后使用 es6 导入 [重复]