在 Babeljs 配置中使用原生 ECMAScript 模块

Posted

技术标签:

【中文标题】在 Babeljs 配置中使用原生 ECMAScript 模块【英文标题】:Using native ECMAScript modules in Babeljs config 【发布时间】:2020-07-30 02:59:19 【问题描述】:

对于将 babel 配置与原生 ECMAScript 模块以及在 package.json 中设置的 "type": "module" 一起使用,我非常非常困惑。据我了解 Babel 文档(here,在“支持的文件扩展名”下),它应该是可能的。但如果我尝试这样的配置:

const config = () => 
  const presets = [
    "@babel/preset-react",
    [
      "@babel/preset-env",
      
        bugfixes: true,
        useBuiltIns: "usage",
        corejs:  version: "3.6", proposals: true ,
      ,
    ],
  ];
  const plugins = ["@babel/plugin-transform-runtime"];
  return  presets, plugins ;
;
export default config;

我收到Error while loading config - You appear to be using a native ECMAScript module configuration file, which is only supported when running Babel asynchronously

这是意料之中的,因为上述文档指出“本机 ECMAScript 模块是异步的”。唉,用async / await 喷洒上述配置并不能解决问题。我正在运行babelparcel - 这是parcel 的问题吗?我误解了文档吗?如果有人能为我澄清一下,我真的很感激。

【问题讨论】:

【参考方案1】:

我遇到了类似的问题,阅读 Babel 站点后,我得出的结论是,使用您的 babel 配置的任何东西都不是异步调用它。就我而言,这是开玩笑 26。 我通过将配置更改为 json 文件解决了这个问题 - babel.config.json。 其他人已经将他们的配置文件更改为commonjs文件-babel.config.cjs,那么您需要将您的配置文件更改为commonjs,即使用module.exports = rest of your config

【讨论】:

以上是关于在 Babeljs 配置中使用原生 ECMAScript 模块的主要内容,如果未能解决你的问题,请参考以下文章

发布使用 webpack 和 babeljs 构建的 npm 包

sh Memento npm命令,项目使用[Babel](https://babeljs.io/)

webpack配置文件能用es6写么

温故而知新 babel-cli 的相关使用

smart-transform取自 Atom 的 babeljs/coffeescript/typescript 智能转 es5 库

使用babel