首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jest: SyntaxError:意外的令牌‘导出’发生在tslb.es6.js上。

Jest: SyntaxError:意外的令牌‘导出’发生在tslb.es6.js上。
EN

Stack Overflow用户
提问于 2022-03-21 16:14:04
回答 1查看 436关注 0票数 5

我知道这个错误:

代码语言:javascript
复制
C:\Users\myname\Projects\ConfigEditor\MesConfiguration.WebClient\node_modules\tslib\tslib.es6.js:24
    export function __extends(d, b) {
    ^^^^^^

    SyntaxError: Unexpected token 'export'

我的jest-esm.config.mjs看起来像这样

代码语言:javascript
复制
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有

代码语言:javascript
复制
"type": "module",

我开始测试时

代码语言:javascript
复制
"test-esm": "node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js -c=jest-esm.config.mjs --no-cache",

什么不对?

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

EN

回答 1

Stack Overflow用户

发布于 2022-10-07 12:24:24

错误消失了,因为您已经设置了

代码语言:javascript
复制
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)']

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

有一件事是,transformIgnorePatterns在某种程度上不能处理数组中的多个项(在某些情况下),所以最好像在我的例子中那样一次性地将所有东西放在一起。

代码语言:javascript
复制
transformIgnorePatterns: ['node_modules/(?!rxjs|tslib)']

下面是我与jest.config.js执行node --experimental-vm-modules node_modules/jest/bin/jest.js一起使用的与Angular14一起使用的完整的Angular14和node --experimental-vm-modules node_modules/jest/bin/jest.js文件

代码语言:javascript
复制
// 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'],
};
代码语言:javascript
复制
// setup-jest.ts
import 'jest-preset-angular/setup-jest.mjs';

Object.defineProperty(window, "getComputedStyle", {
    value: () => ["-webkit-appearance"]
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71560708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档