这个错误通常是由于 Jest 单元测试环境不支持使用 ES6 的模块导入语法所导致的。

解决这个问题的方法有两种:

  1. 使用 Babel 转换:在 Jest 配置文件中添加 Babel 转换的配置,以便 Jest 可以正确地处理 ES6 的模块导入语法。可以通过以下步骤来实现:

    • 首先,确保已经安装了 @babel/preset-env@babel/preset-react(如果你的项目中使用了 React)这两个 Babel 预设包。

    • 在项目根目录下创建一个名为 babel.config.js 的文件,并添加以下内容:

      module.exports = {
        presets: ['@babel/preset-env', '@babel/preset-react'],
      };
      
    • 然后,在 Jest 配置文件中添加 transform 配置项,指定要使用 Babel 进行转换:

      module.exports = {
        // ...
        transform: {
          '^.+\.jsx?$': 'babel-jest',
        },
      };
      
  2. 使用 CommonJS 导入语法:将你的测试文件中的 ES6 模块导入语句改为使用 CommonJS 导入语法。例如,将 import 语句改为 require 语句。这样 Jest 就可以正确地解析和执行你的测试文件。

    例如,将以下代码:

    import { sum } from './math';
    

    改为:

    const { sum } = require('./math');
    

    然后,你就可以运行 Jest 单元测试了。

请注意,第一种方法使用了 Babel 转换,可以更好地支持 ES6 的模块导入语法。第二种方法则是一种简单的替代方案,适用于不想配置 Babel 的情况。

Jest 单元测试报错: SyntaxError: Cannot use import statement outside a module - 解决方法

原文地址: https://www.cveoy.top/t/topic/fNAj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录