我正在学习 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”“导入”一起使用?还是还有其他我完全想念的东西?
非常感谢任何帮助!
最佳答案
AVA(带有 TypeScript 设置)在执行之前将 TypeScript 代码编译回 JavaScript。
并且 NodeJS 不支持 esm 语法,除非您正在执行 *.mjs
。
因此,您必须在 tsconfig.json
中将“模块”设置为“commonjs”:
{
"compilerOptions": {
"module": "commonjs"
}
}
关于javascript - Ava 单元测试因 TypeScript 失败 ("SyntaxError: Unexpected identifier"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56566167/