加载配置文件时出错 - 您似乎正在使用本地的 ECMAScript 模块配置文件。

88
当我发起一个拉取请求时,出现了这个错误。有一个 GitHub 工作流程审计会对拉取请求进行检查,并从另一个仓库加载测试文件。
- name: Run Audits
      run: npx jest audits/ch-2 --json --outputFile=audits/ch-2.json --noStackTrace


Test suite failed to run

    /Users/frankukachukwu/StudioProjects/covid-19-estimator-tksilicon-js/babel.config.js: Error while loading config - You appear to be using a native ECMAScript module configuration file, which is only supported when running Babel asynchronously.

如何解决这个问题?

你没有 jest.config.js 吗? - Julien TASSIN
使用Node.js更多功能,我很惊讶你需要Babel。 - Julien TASSIN
不好意思,朱利安不在,请问我能帮您做些什么? - tksilicon
你使用 import 还是 require - Julien TASSIN
1
@Gaz_Edge 已修复。 - tksilicon
显示剩余3条评论
2个回答

151
TL;DR:将babel.config.<extension>更改为babel.config.cjs即可解决问题。如果需要其他配置,请参考babel文档
这与Babel的设置有关。对于babel.config.extension,可以使用.mjs、cjs或.js扩展名。在我的情况下,我正在运行LTE Node 12.6.2。我需要在我的目录根目录下使用babel.config.cjs进行配置。当使用"type"="module"时,cjs适用于Nodejs。在babel文档中这里可以了解更多信息。
module.exports = {
  presets: [
    [
      '@babel/preset-env',
      {
        targets: {
          node: 'current'
        }
      }
    ]
  ]
};

并且根目录下也有jest.config.cjs。


109
将 babel.config.js 重命名为 babel.config.cjs 对我有用!谢谢。 - pbatey
@pbatey 哇,你怎么解释那个的?! 不管怎样,谢谢伙计,省了我时间。 - Amesys
3
我读到 cjs 是指 commonJS,我一直在使用带有 --experimental-modules 的 node,所以我猜测 .js 默认使用模块 (import) 而不是 commonJS (require)。 - pbatey

38

除了"cjs"的解决方案外,我还可以将babel.config.js转换为babel.config.json来解决这个问题:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        }
      }
    ],
    "@babel/preset-typescript"
  ]
}

这也可以工作,但请注意需要安装@babel/preset-typescript - Exodus Reed
这帮助我解决了我的问题,使用vite。 - aevin
对我来说,只有这个解决方案起作用,并且我还需要在 package.json 中添加以下 jest 配置: "jest": { "modulePaths": ["<rootDir>"] } - Evgeniya Manolova

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接