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' 一起工作?或者还有其他我完全想念的东西吗?
非常感谢任何帮助!
AVA(带有 TypeScript 设置)在执行前将 TypeScript 代码编译回 JavaScript。
并且 NodeJS 不支持 esm 语法,除非你正在做 *.mjs
。
因此您必须在 tsconfig.json
:
中将 "module" 设置为 "commonjs"
{
"compilerOptions": {
"module": "commonjs"
}
}
我正在学习 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' 一起工作?或者还有其他我完全想念的东西吗?
非常感谢任何帮助!
AVA(带有 TypeScript 设置)在执行前将 TypeScript 代码编译回 JavaScript。
并且 NodeJS 不支持 esm 语法,除非你正在做 *.mjs
。
因此您必须在 tsconfig.json
:
{
"compilerOptions": {
"module": "commonjs"
}
}