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

boo*_*jum 8 javascript babeljs parceljs

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

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;
Run Code Online (Sandbox Code Playgroud)

我明白了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并不能解决问题。我正在babel通过parcel-这是一个问题parcel?我误解了文档吗?如果有人能为我澄清一下,我真的很感激。

小智 14

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


Muh*_*Ali 8

我认为问题是你package.json说你正在使用ES6 模块,但你的 Babel 配置正在使用CommonJS (module.exports不是ES6 模块)

重命名babel.config.jsbabel.config.cjs