开玩笑:语法错误:在 tslib.es6 上发生意外的令牌'export'.js



我得到这个错误:

C:UsersmynameProjectsConfigEditorMesConfiguration.WebClientnode_modulestslibtslib.es6.js:24
export function __extends(d, b) {
^^^^^^
SyntaxError: Unexpected token 'export'

我的jest-esm.config.js看起来像这个

const jestConfig = {
preset: 'jest-preset-angular/presets/defaults-esm',
extensionsToTreatAsEsm: ['.ts'],
globals: {
'ts-jest': {
useESM: true,
stringifyContentPathRegex: '\.(html|svg)$',
tsconfig: '<rootDir>/tsconfig-esm.spec.json',
},
},
testEnvironment: 'jsdom',
moduleFileExtensions: ['ts', 'html', 'js', 'json', 'mjs'],
resolver: 'jest-preset-angular/build/resolvers/ng-jest-resolver.js',
transformIgnorePatterns: ['node_modules/(?!.*\.mjs$)'],
transform: {
'^.+\.(ts|js|mjs|html|svg)$': 'jest-preset-angular',
},
globalSetup: 'jest-preset-angular/global-setup',
moduleNameMapper: {
//tslib: 'tslib/tslib.mjs',
tslib: 'tslib/tslib.es6.js',
"@shared/(.*)": "<rootDir>/src/app/shared/$1",
"@editors/(.*)": "<rootDir>/src/app/editors/$1",
"@dashboard/(.*)": "<rootDir>/src/app/dashboard/$1",
"@env": "<rootDir>/src/environments/environment",
},
setupFilesAfterEnv: ['<rootDir>/src/setup-jest.ts'],
}
export default jestConfig;

package.json有

"type": "module",

我用开始测试

"test-esm": "node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js -c=jest-esm.config.mjs --no-cache",

怎么了?

将tslib.es6.js重命名为tslib.mjs后,错误消失了,但这不是解决方案。它应该在任何yarn install之后工作

由于设置了,错误消失了

transformIgnorePatterns: ['node_modules/(?!.*\.mjs$)']

您基本上使用的是预设的jest-preset-angular/presets/defaults-esm,所以您在配置中键入的大多数属性都是冗余的

一件事是transformIgnorePatterns不知何故不能处理该数组中的多个项目(在某些情况下(,所以最好像我的一样一次放置所有项目

transformIgnorePatterns: ['node_modules/(?!rxjs|tslib)']

这是我的完整jest.config.jssetup-jest.ts文件,我正在使用Angular14和ESM执行node --experimental-vm-modules node_modules/jest/bin/jest.js

// jest-config.ts
module.exports = {
preset: 'jest-preset-angular/presets/defaults-esm',
testRegex: '.*spec.ts$',
transformIgnorePatterns: [
'node_modules/(?!rxjs|tslib)'
],
moduleNameMapper: {
"^dnd-core$": "dnd-core/dist",
"^react-dnd$": "react-dnd/dist",
"^react-dnd-html5-backend$": "react-dnd-html5-backend/dist",
"^react-dnd-touch-backend$": "react-dnd-touch-backend/dist",
"^react-dnd-test-backend$": "react-dnd-test-backend/dist",
"^react-dnd-test-utils$": "react-dnd-test-utils/dist"
},
setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],
};
// setup-jest.ts
import 'jest-preset-angular/setup-jest.mjs';
Object.defineProperty(window, "getComputedStyle", {
value: () => ["-webkit-appearance"]
});

最新更新