Javascript Jest-Jest遇到意外标记。香草JS

Javascript Jest-Jest遇到意外标记。香草JS,javascript,jestjs,Javascript,Jestjs,我试图用JavaScript制作一个复杂的zip提取器,我认为单元测试非常重要。话虽如此,一位朋友推荐开玩笑。我无法让任何测试正常工作,所以我做了一个愚蠢的测试,确保我的JS枚举的第一个值为0。然而,Jest总是说它遇到了一个意外的标记 我尝试了一个更复杂的测试,并将其简化为这个简单的测试: enums.js: const Format = { UNKNOWN: 0, ZIP: 1, TAR_GZIP: 2, TAR_BZIP: 3, }; export def

我试图用JavaScript制作一个复杂的zip提取器,我认为单元测试非常重要。话虽如此,一位朋友推荐开玩笑。我无法让任何测试正常工作,所以我做了一个愚蠢的测试,确保我的JS枚举的第一个值为0。然而,Jest总是说它遇到了一个意外的标记

我尝试了一个更复杂的测试,并将其简化为这个简单的测试:

enums.js:

const Format = {
    UNKNOWN: 0,
    ZIP: 1,
    TAR_GZIP: 2,
    TAR_BZIP: 3,
};

export default Format
enums.test.js

const {Format} = require("../src/enums.js");

test("bad test", () => {
   expect(Format.UNKNOWN).toBe(0);
});
is给我的错误是:

Test suite failed to run

    Jest encountered an unexpected token

    This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

    By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

    Here's what you can do:
     • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
     • If you need a custom transformation specify a "transform" option in your config.
     • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

    You'll find more details and examples of these config options in the docs:
    https://jestjs.io/docs/en/configuration.html

    Details:

    /home/giovanni/WebstormProjects/extract.js/src/enums.js:7
    export default Format;
    ^^^^^^

    SyntaxError: Unexpected token export

    > 1 | const Format = require("../src/enums.js");
        | ^
      2 | 
      3 | test("bad test", () => {
      4 |    expect(Format.UNKNOWN).toBe(0);

      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:471:17)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:513:25)
      at Object.<anonymous> (test/enum.test.js:1:1)

测试套件无法运行
Jest遇到了意外的标记
这通常意味着您正试图导入Jest无法解析的文件,例如,它不是纯JavaScript。
默认情况下,如果Jest看到一个Babel配置,它将使用它来转换您的文件,忽略“node_modules”。
以下是您可以做的:
•要转换某些“节点模块”文件,可以在配置中指定自定义“transformIgnorePatterns”。
•如果需要自定义转换,请在配置中指定“转换”选项。
•如果您只是想模拟您的非JS模块(例如二进制资产),您可以使用“moduleNameMapper”配置选项将其剔除。
您将在文档中找到这些配置选项的更多详细信息和示例:
https://jestjs.io/docs/en/configuration.html
细节:
/home/giovanni/websprojects/extract.js/src/enums.js:7
导出默认格式;
^^^^^^
SyntaxError:意外的令牌导出
>1 | const Format=require(“../src/enums.js”);
| ^
2 | 
3 |测试(“坏测试”),()=>{
4 | expect(格式未知).toBe(0);
在ScriptTransformer._transformAndBuildScript(节点_modules/@jest/transform/build/ScriptTransformer.js:471:17)
在ScriptTransformer.transform(node_modules/@jest/transform/build/ScriptTransformer.js:513:25)
at对象。(test/enum.test.js:1:1)

使用Bable修复了这个问题。我用NPM安装了Babel后,添加了一个文件.babelrc,其中包含以下内容:

{
  "presets": ["@babel/preset-env"]
}

这是有效的。

您不需要
{}
作为默认导出的
格式
,您可以尝试使用而不是
导出
?我认为jest默认不支持es6。您需要使用babel。请参阅babel解决方案的答案您可能需要在测试之前允许jest传输模块。