簡體   English   中英

玩笑:語法錯誤:意外的令牌導出

[英]Jest: SyntaxError: Unexpected token export

當我使用 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。

在較新版本的 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文件中定義它,如下所示:

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

Babel 官方網站上查看更多詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM