【问题标题】:Ava unit tests failing with TypeScript ("SyntaxError: Unexpected identifier")Ava 单元测试因 TypeScript 失败(“SyntaxError: Unexpected identifier”)
【发布时间】:2019-06-12 15:54:48
【问题描述】:

我正在学习 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'一起使用?还是我完全遗漏了什么?

非常感谢任何帮助!

【问题讨论】:

    标签: javascript reactjs typescript create-react-app ava


    【解决方案1】:

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

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

    因此,您必须在 tsconfig.json 中将“模块”设置为“commonjs”:

    {
      "compilerOptions": {
        "module": "commonjs"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-28
      • 2022-06-16
      • 2018-03-29
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 2019-10-28
      相关资源
      最近更新 更多