无法在模块文件中使用jest在node js中进行测试

t40tm48m  于 2023-06-22  发布在  Node.js
关注(0)|答案(1)|浏览(159)

我试图使用jest来测试我的模块文件,遇到了错误,我寻找在线帮助,试图通过将其更改为cjs文件来运行测试,但没有成功。我遇到的错误:

FAIL  tests/sum.test.cjs
  ● Test suite failed to run
                                                                                                                               
    Jest encountered an unexpected token

    Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.

更具体地说

Details:

    <edited_path>\event-management-system\tests\sum.test.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){import sum from '../sum.js';
                                                                                      ^^^^^^

    SyntaxError: Cannot use import statement outside a module

      at Runtime.createScriptFromCode (node_modules/.pnpm/jest-runtime@29.5.0/node_modules/jest-runtime/build/index.js:1495:14)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        1.227 s
Ran all test suites.

我用来测试的文件是sum.js

const sum = (a, b) => {
  return a + b;
};

export default sum;

sum.test.js

import sum from '../sum.js';

describe('sum module', () => {
  test('adds 1 + 2 to equal 3', () => {
    expect(sum(1, 2)).toBe(3);
  });
});

请帮助我解决此特定错误
编辑:
我已经尝试过将文件类型更改为.mjs文件或使用require语法而不是import。并使用.cjs文件时间作为测试文件。

rwqw0loc

rwqw0loc1#

有几件事可以尝试:
在您的package.json中添加以下内容

{
        "type": "module",   
    }


将文件类型更改为.mjs文件

使用require语法而不是import
你可以在这里看到其中的一些解决方案:"Uncaught SyntaxError: Cannot use import statement outside a module" when importing ECMAScript 6

相关问题