【问题标题】:Jest: SyntaxError: Unexpected token export笑话:SyntaxError:意外的令牌导出
【发布时间】:2021-03-08 00:38:03
【问题描述】:

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

【问题讨论】:

    标签: javascript angular typescript jestjs jasmine


    【解决方案1】:

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

    在较新版本的 jest 中,babel-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 预设,它为 ES2015+ 启用转换

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

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

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

    查看Babel official site了解更多详情

    【讨论】:

    • 当我这样做时,我会收到更多关于之前没有问题的意外令牌的错误
    猜你喜欢
    • 1970-01-01
    • 2017-07-04
    • 2019-01-14
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 2021-05-02
    • 1970-01-01
    相关资源
    最近更新 更多