TypeScript项目意外导出令牌-transformIgnorePattern问题

时间:2018-12-21 10:06:02

标签: typescript jestjs

我有一个使用Jest测试的TypeScript项目,使用ts-jest作为我的转换器,可以正常工作。但是,当我尝试使用似乎是用TypeScript编写但作为ES6分发的软件包时,我在运行测试时遇到了令人恐惧的错误:“意外的令牌导出”错误新包装。

我了解为什么会发生这种情况,但是即使对这一问题进行了广泛的研究并看到其他人如何使用transformIgnorePatterns(例如这篇文章comment和等等),但到目前为止,我还没有取得任何进展。

测试运行良好,直到我导入并引用了这些问题库之一。只需添加:

import { Environment, EnvironmentType } from '@microsoft/sp-core-library';
...
const x: EnvironmentType = Environment.type;

...然后运行测试给我:

/Users/ac/_play/jest-transform-repro/node_modules/@microsoft/sp-core-library/lib/index.js:11
export { default as _BrowserDetection } from './BrowserDetection';
^^^^^^

SyntaxError: Unexpected token export

我创建了一个项目,可以在此处轻松回购我的问题:https://github.com/andrewconnell/jest-transform-repro

  1. 克隆https://github.com/andrewconnell/jest-transform-repro
  2. npm安装
  3. npm测试

观察一切正常

  1. 打开文件 ./ src / webparts / helloWorld / components / Sample / Sample.tsx 并取消注释这两行
  2. npm测试

观察失败

我尝试将transformIgnorePatterns更新为<rootDir>/../node_modules/(?!(@microsoft/sp-core-library)),并尝试了不同的方式,但这无济于事。我已经看过有关更改.bablerc => babel.config.js的帖子,但是我没有在我的项目中使用Babel,因为这都是TypeScript。

一旦我为这个库工作了,我知道我需要排除更多……更多……所以理想情况下,我想创建一些解决“ @ microsoft / *”包的问题,您不仅可以从上面的回购中默认的“ npm install”中看到上面列出的内容,还有很多其他内容会给我带来麻烦。

想法?我很茫然:(

1 个答案:

答案 0 :(得分:0)

这些是我开玩笑所做的更改,以便在TS SPFX项目下工作:

tsconfig.json

  • 启用"allowJs": true,

package.json(添加笑话配置):

    "jest": {    
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "json"
    ],

    "testURL": "http://localhost",
    "transform": {
      "^.+\\.(js|ts|tsx)$": "ts-jest"
    },
    "transformIgnorePatterns": [
      "node_modules/(?!(@microsoft/sp-dialog|@microsoft/office-ui-fabric-react-bundle|@microsoft/sp-diagnostics|@microsoft/sp-core-library|@microsoft/sp-http|@microsoft/sp-page-context|@microsoft/sp-dynamic-data|@pnp/sp|@pnp/common|@pnp/odata|@pnp))"
    ],
    "testMatch": [
      "**/src/**/*.test.+(ts|tsx|js)",
      "**/__tests__/**/*.(spec|test).+(tsx|ts|js)?(x)"
    ],
    "moduleNameMapper": {
      "\\.(css|less|scss|sass)$": "identity-obj-proxy",
      "^resx-strings/en-us.json": "<rootDir>/node_modules/@microsoft/sp-core-library/lib/resx-strings/en-us.json"
    },
  }

附加软件包:

  • "ts-jest": "^24.0.2",
  • "jest": "^26.6.3","jest-junit": "^12.0.0",
  • "@types/jest": "^26.0.15",
  • "identity-obj-proxy": "^3.0.0",

另一方面,我使用的是enzyme

,而不是react-testing-library