SyntaxError:使用带有Jest的ES2015模块导入测试打字稿代码时,意外的令牌导出

时间:2018-11-07 23:36:30

标签: typescript jestjs es6-modules

我正在努力获取一些我测试过的代码。

在我所有的项目中,我都使用笑话进行测试。只要我有javascript文件,它就可以正常工作,但是我确实可以处理某些包含打字稿代码的软件包。该代码包含与ES2015模块导入和导出的依赖关系,并在与webpack捆绑构建时捆绑在一起,其中目标代码仍包含ES2015模块导出和导入

Jest在节点上运行并且无法处理ES2015模块(尚未),当我想运行测试时,我无法弄清楚如何配置打字稿babel或jest将依赖项代码转换为commonjs模块

我花了很多时间试图解决这个问题,因此,我感谢能获得的所有帮助。

在此示例中,我为Typescript克隆了最好的示例项目,并将其修改为包含一个包含ES2015模块的依赖项以说明问题

tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "module": "commonjs"
  }
}

package.json

{
    "devDependencies": {
        "@types/jest": "^23.1.1",
        "@types/node": "^10.12.3",
        "jest": "*",
        "typescript": "*",
        "ts-jest": "*"
      },

        "dependencies": {
            "lodash-es": "^4.17.11" //has es2015 exports
          },
          "jest": {
            "moduleFileExtensions": [
             "ts",
              "tsx",
              "js"
            ],
            "transform": {
              "^.+\\.(ts|tsx)$": "ts-jest"
            },
            "globals": {
              "ts-jest": {
                "tsConfigFile": "tsconfig.json"
              }
            },
            "testMatch": [
              "**/__tests__/*.+(ts|tsx|js)">
            ]
          }
}

wrap.ts

import {map} from "lodash-es";
export function wrap(a: number, b: number): number {
  return map([a,b],i=>({i}));
}

wrap.test.ts

import {wrap} from "../sum"
it('wrap ', ()=> {
  expect(wrap(1, 2)).toBe([{i:1},{i:1}]);
});

我开玩笑的时候

 export { default as add } from './add.js';
 ^^^^^^

SyntaxError: Unexpected token export

来自依赖项中的文件

有关如何解决此问题的任何想法?

0 个答案:

没有答案