javascript - Jest : SyntaxError: Unexpected token export

标签 javascript angular typescript jestjs jasmine

当我用 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',
    }
};

最佳答案

Jest 不支持 ES6 模块,因此当您直接使用 Jest 运行测试时会抛出此错误。如果你想像那样运行,那么你必须添加 babel。

In newer version of jest babel-jest is now automatically loaded by Jest and fully integrated

希望这能回答您的问题。

在 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 预设,它可以为 ES2015+ 启用转换

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

为了启用预设,您必须在 babel.config.json 文件中定义它,如下所示:

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

查看有关 Babel official site 的更多详细信息

关于javascript - Jest : SyntaxError: Unexpected token export,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64999897/

相关文章:

javascript - 比较两个数组并在相同值索引处更改数据

javascript - andreasgal 的 pdf.js 不使用绝对路径加载 pdf。仅适用于相对路径

javascript - 内联列表 - 有哪些方法可以使元素等于最大宽度?

javascript - 根据路由 Angular 4 切换组件

typescript - 如何在没有操作的情况下使用 graphql schema.json 为 graphql 类型生成 typescript 接口(interface)?

typescript - 如何更改 typescript 模板字符串上的 Notepad++ 语法突出显示

javascript - 正则表达式(只有 1 点)

javascript - Angular2 - 限制 p 内的行数

angular - 如何以 react 形式设置 Prime NG 单选按钮默认值

javascript - typescript :我如何获得真正的 "this"