Jest:语法错误:意外的 export 符号

3

当我使用Jest运行我的Jasmine测试时,会出现错误:

G:\git\diamant\SpaUI\node_modules\linqts\dist\src\index.js:10
    export { default as List } from './list';
    ^^^^^^

    SyntaxError: Unexpected token export

    > 1 | import { List } from 'linqts';
        | ^
      2 | import { ReportMessageData } from './../models/report.model';
      3 | import { TranslateService } from '@ngx-translate/core';
      4 | import { Injectable } from '@angular/core';

      at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1350:14)
      at Object.<anonymous> (src/app/feature-modules/report/services/report-message-flatten.service.ts:1:1)

我知道我需要告诉Jest将代码转换为纯JavaScript,但我不知道如何做到这一点。我的jest.config.js如下:

var preset = require("jest-preset-angular/jest-preset");
module.exports = {
    ...preset,
    preset: "jest-preset-angular",
    transformIgnorePatterns: ["<rootDir>/node_modules/(?!linqts)"],
    testMatch: ["**/*.test.ts"],
    globals: {
        ...preset.globals,
        "ts-jest": {
            ...preset.globals["ts-jest"],
            tsConfig: "src/tsconfig.test.json",
            isolatedModules: true
        }
    },
    moduleNameMapper: {
        '^@diamant/feature-modules(.*)$': '<rootDir>/src/app/feature-modules/$1',
    }
};

这个问题有没有可用的解决方案?我和Philip遇到了类似的问题。 - Ininiv
1个回答

3
Jest不支持ES6模块,因此在直接使用Jest运行测试时会引发此错误。如果您想这样运行,则必须添加babel。

在较新版本的Jest中,babel-jest现在已由Jest自动加载并完全集成

希望这回答了你的问题。
在Jest中添加babel。
安装 babel-jest现在已由Jest自动加载并完全集成。仅在使用babel-jest转换TypeScript文件时才需要此步骤。
npm install --save-dev babel-jest

用法

在您的 package.json 文件中进行以下更改:

{
  "scripts": {
    "test": "jest"
  },
  "jest": {
    "transform": {
      "^.+\\.[t|j]sx?$": "babel-jest"
    }
  }
}

创建 .babelrc 配置文件 在您的项目根目录中创建一个 babel.config.json 配置文件,并启用一些 presets。 首先,可以使用 env preset 来启用 ES2015+ 的转换。

npm install @babel/preset-env --save-dev

为了启用预设,您需要在babel.config.json文件中定义它,像这样:
{
  "presets": ["@babel/preset-env"]
}

请在Babel官方网站上查看更多详细信息。


6
当我这样做时,会出现更多意料之外的标记错误,这些错误以前并不成问题。 - Philip Frerk

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