开玩笑,无法理解特定文件中的“导出默认值”

问题描述 投票:0回答:1

我在我的 React 应用程序中安装了名为 sinon js 的软件包,我的版本 5.0.10 已弃用。

所以我决定将其升级到最新版本18.0.0

这个包在我的测试文件中使用,通过导入它并从中创建假服务器等等。

在旧版本上,我拥有的所有测试用例都运行得很好。

问题:

当升级此包的版本并再次运行测试用例时,它不断向我显示有关在添加到此包的新文件中导出默认语法的错误。 这是 jest 提供的错误

所以 jest 不再能够理解这个文件,因为它不是用 commonJs 语法编写的。

我搜索并尝试了多种解决方案,但没有一个有效, 我只是想强制 jest 转换 Node_modules 中的任何新文件 这不是用 CommonJs 语法编写的。

以下是有关我当前的 jest 和 babel 设置的附加信息。

出现错误的node_modules内的文件路径: node_modules/sinon/pkg/sinon-esm.js

jest:这些是当前的变换和transformIgnorePatterns值。

"transform": {
      "^.+\\.(js|jsx|mjs)$": "<rootDir>/node_modules/babel-jest",
      "^(?!.*\\.(js|jsx|mjs|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
    },
    "transformIgnorePatterns": [
      "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs)$"
    ],

bablerc 文件:这些是我当前的 babel 配置。

{
  "env": {
    "test": {
      "presets": ["@babel/preset-react", "@babel/preset-env"]
    },
    "icons": {
      "presets": ["@babel/preset-react", "@babel/preset-env"]
    }
  },
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ],
  "plugins": [
    "lodash",
    [
      "@babel/plugin-transform-runtime",
      {
        "helpers": false,
        "regenerator": true
      }
    ],
    ["@babel/plugin-transform-optional-chaining"]
  ]
}

这是我的 webpack 配置中 js 和 jsx 文件的规则:

 {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        query: {
          presets: ['es2015', 'react', 'stage-0'],
          plugins: ['transform-object-rest-spread', 'lodash'],
        },
      },
webpack jestjs babeljs es6-modules babel-jest
1个回答
0
投票

据我所知,您更新了

SinonJS
包(13 版本),它不再支持旧语法。我会:

  • A:只需尝试更新您的代码,认为
    v5
    中有效的内容适用于
    v18
    是不现实的。
  • B:尝试修改您的
    package.json
    文件以允许较旧的Javascript语法。使用
    ES Modules

package.json

{
    "type": "commonjs"
}

应该指出的是,CommonJS 目前被认为是遗留的,但并未完全弃用。

© www.soinside.com 2019 - 2024. All rights reserved.