当我用 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/