![](/img/trans.png)
[英]JEST with Angular SyntaxError: Unexpected token 'export'
[英]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.