Ava unit tests failing with TypeScript ("SyntaxError: Unexpected identifier")

Ava unit tests failing with TypeScript ("SyntaxError: Unexpected identifier")

我正在学习 TypeScript,并使用 create-react-app 创建了一个 TypeScript React 应用程序。它使用一个单独的 TypeScript 文件 logic.ts,该文件又导入一个 JSON 文件

import pastaData from './data/users-pasta.json'

 const ParsedUserData  = pastaData.map(data => ({name: data.name, gender:data.gender,favorites: data.favorites}));

export const getPastaData = () => ParsedUserData;

它工作正常。但是当我 运行 我的 Ava 测试时(目前什么都不做)

const {getPastaData} = require( '../src/logic.ts')

describe("A suite", function() {
  it("contains spec with an expectation", function() {
    expect(true).toBe(true);
  });
}); 

我收到以下错误

/src/logic.ts:1
(function (exports, require, module, __filename, __dirname) { import pastaData from './data/users-pasta.json';
SyntaxError: Unexpected identifier

它在抱怨 'pastaData' 导入这里。

我将 Ava 设置为使用 Typescript(来自 package.json)

{

  "ava": {
    "compileEnhancements": false,
    "extensions": [
      "ts"
    ],
    "require": [
      "ts-node/register"
    ]
  }
}

现在一直在努力让 Ava-ts 工作。同样的问题。

我认为这是 ts-node 的问题,但将所有链接文件更改为 'require' 证明是有问题的(并且 TypeScript 开始抱怨)。有没有办法让它与 'ES-6' 'imports' 一起工作?或者还有其他我完全想念的东西吗?

非常感谢任何帮助!

A​​VA(带有 TypeScript 设置)在执行前将 TypeScript 代码编译回 JavaScript。

并且 NodeJS 不支持 esm 语法,除非你正在做 *.mjs

因此您必须在 tsconfig.json:

中将 "module" 设置为 "commonjs"
{
  "compilerOptions": {
    "module": "commonjs"
  }
}