在小型节点项目上使用 babel 和 preset-env,无法将 import/export 语句转换为 commonjs

Using babel with preset-env on a small node project, unable to convert import/export statements to commonjs

我正在尝试设置一个节点项目,以便我可以使用常见的 import/export 语法,并且为了兼容性,使用 babeljs 将 importexport 语句转换为requires.

当我尝试使用 babel 进行转译时,我没有看到任何变化,我也不知道为什么。

这是我的 babel.config.js

// babel.config.js
module.exports = {
  // I thought this was what I would need to add for making the changes, based on the docs
  plugins: ["@babel/plugin-transform-modules-commonjs"],


  // env takes care of the majority of changes I might need to convert code to make
  // easy to run on a wider range of machines
  presets: [
    [
      "@babel/preset-env",
      {
        targets: {
          // target an older version where I know there is no ESM support
          node: "10"
        }
      }
    ]
  ],
  // this was in the docs too - I'm not sure if  I need it TBH
  sourceType: "module"
}

我在一个目录中有一堆使用 import/exportasync/await 的代码,我想将它们转换并放入另一个目录 lib.

这是我正在使用的命令:

npx babel src --out-dir lib

我的 package.json 文件也在网上,那里没有什么太深奥的。我试着忠实地遵循文档。

我希望看到代码发生变化,用库中的 require 替换 import/export 调用,但我并不高兴。

我在这里做错了什么?我在 6-7 个月前从事一个相关项目,在那里我像这样使用 babel,它 确实 为我做了更改。

你可以看到 branch with the problem code on github, with the package.json, and here's the source code for other project mentioned where it is working.

SO 评论的同胞们,请保持温柔 - 我正在尽力而为,真的。

看起来您使用的是 "babel-cli": "^6.26.0" 而不是 "@babel/cli": "^7.11.6" 应该可以解决这个问题。