javascript - Jest: SyntaxError: Neočakávaný token export
Keď spustím svoj test Jasmine s Jest, dostanem chybu:
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)
Chápem, že musím povedať Jestu, aby transformoval kód na obyčajný JavaScript, ale neviem, ako to urobiť. Môj jest.config.js vyzerá nasledovne:
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',
}
};
Odpoveď č. 1
Jest nepodporuje ES6 modul a preto pri priamom spustení testu s Jest ho vyhodí túto chybu. Ak chcete spustiť test takto, musíte pridať Babel.
V novejšej verzii Jest je babel-jest teraz automaticky načítaný Jestom a je plne integrovaný
Dúfam, že to odpovedá na tvoju otázku.
Pridanie Babelu do Jest.
Inštalácia
babel-jest je teraz automaticky načítaný pomocou Jest a je plne integrovaný. Tento krok je potrebný iba v prípade, že používate babel-jest na transformáciu súborov TypeScript.
npm install --save-dev babel-jest
Použitie
Vo vašom súbore package.json vykonajte nasledujúce zmeny:
{
"scripts": {
"test": "jest"
},
"jest": {
"transform": {
"^.+\\.[t|j]sx?$": "babel-jest"
}
}
}
Vytvorte konfiguračný súbor .babelrc Vytvorte v koreňovom adresári svojho projektu konfiguráciu babel.config.json a zapnite niektoré prednastavenia. Na začiatok môžete použiť prednastavenie env, ktoré umožňuje transformácie pre ES2015+
npm install @babel/preset-env --save-dev
Aby ste mohli prednastavenie povoliť, musíte ho definovať vo svojom súbore babel.config.json takto:
{
"presets": ["@babel/preset-env"]
}
Skontrolujte viac podrobností na oficiálnej stránke Babel
