Jestjs 意外标记'<';jest和测试库/react原生类型脚本测试文件

Jestjs 意外标记'<';jest和测试库/react原生类型脚本测试文件,jestjs,babeljs,Jestjs,Babeljs,运行以下测试文件时出现以下错误: //TestComp.test.tsx 从“React”导入React; 从“react native”导入{TextInput,View}; 从“@testing library/react native”导入{render,firevent}”; 常量TestComp=()=>{ 返回( console.log(txt)}> ); }; 描述(“Testcomp”,()=>{ 之后(()=>{ 开玩笑。clearAllMocks(); }); 测试(“测试我

运行以下测试文件时出现以下错误:

//TestComp.test.tsx
从“React”导入React;
从“react native”导入{TextInput,View};
从“@testing library/react native”导入{render,firevent}”;
常量TestComp=()=>{
返回(
console.log(txt)}>
);
};
描述(“Testcomp”,()=>{
之后(()=>{
开玩笑。clearAllMocks();
});
测试(“测试我”,异步()=>{
const{getByTestId}=render();
常量testInput=getByTestId(“测试输入”);
changeText(testInput,“hello”);
});
});
运行
纱线笑话时出错

    Details:

    /mnt/ubuntu/home/richardwu/code/topspin/src/components/TestComp.test.tsx:46
        return (<react_native_1.View>
                ^

    SyntaxError: Unexpected token '<'

      at compileFunction (node:vm:355:18)
//babel.config.js
module.exports=函数(api){
api.cache(true);
返回{
预设:[“巴别塔预设博览会”、“@babel/preset typescript”],
};
};

由于您已经在使用Babel和
@Babel/preset-typescript
,因此可以更新Jest配置,以便对JavaScript和typescript文件使用
Babel-Jest
。只需将
transform
regex更新为以下内容

//jest.config.js
module.exports={
预设:“反应本机”,
转换:{
“^.+\.[jt]sx?$”:“巴别塔玩笑”,
},
transformIgnorePatterns:[“节点\模块/?!(反应图标)”,
setupFilesAfterEnv:[“/src/setupTests.ts”],
};

通过该更改,您可以从项目中卸载
ts jest
,因为它将不再使用。

在当前设置中,
jest
将使用
包.json
中的配置。要让它指向您的
jest.config.js
文件,您可以将
test
脚本更新为
jest--config
。我刚刚尝试使用
--config
标志运行它:但似乎无法解决问题。尝试添加
ts加载器
awesome ts加载器
您尝试过使用
babel jest
对于JSX和TSX文件?看起来您已经安装了
@babel/preset-typescript
,应该可以正常工作了。@MarkSkelton将myjest.config.js中的
tsx?
转换为
babel-jest
成功了!请随便写下答案,我会记下来的。
// package.json
{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject",
    "test": "jest"
  },
  "dependencies": {
    "@apollo/client": "^3.2.5",
    "@expo-google-fonts/inter": "^0.1.0",
    "@react-native-community/masked-view": "0.1.10",
    "@types/jest": "^26.0.19",
    "@types/react-router-native": "^5.1.0",
    "expo": "~39.0.2",
    "expo-auth-session": "~2.0.0",
    "expo-constants": "~9.2.0",
    "expo-facebook": "~9.0.0",
    "expo-font": "~8.3.0",
    "expo-status-bar": "~1.0.2",
    "firebase": "^8.0.0",
    "graphql": "^15.4.0",
    "native-base": "^2.13.14",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-hook-form": "^6.11.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-39.0.4.tar.gz",
    "react-native-deck-swiper": "^2.0.5",
    "react-native-elements": "^3.0.0-alpha.1",
    "react-native-expo-viewport-units": "^0.0.8",
    "react-native-fbsdk": "^2.0.0",
    "react-native-gesture-handler": "~1.7.0",
    "react-native-reanimated": "~1.13.0",
    "react-native-safe-area-context": "3.1.4",
    "react-native-screens": "~2.10.1",
    "react-native-swipe-cards": "^0.1.1",
    "react-native-web": "~0.13.12",
    "react-router-native": "^5.2.0",
    "react-tinder-card": "^1.3.1",
    "ts-jest": "^26.4.4"
  },
  "devDependencies": {
    "@babel/core": "^7.12.10",
    "@babel/preset-env": "^7.12.11",
    "@babel/preset-typescript": "^7.12.7",
    "@testing-library/jest-dom": "^5.11.5",
    "@testing-library/react-native": "^7.1.0",
    "@types/react": "^16.9.56",
    "@types/react-dom": "^16.9.9",
    "@types/react-native": "^0.63.34",
    "@types/react-test-renderer": "^17.0.0",
    "babel-jest": "^26.6.3",
    "eslint": "^7.13.0",
    "eslint-plugin-jest": "^24.1.3",
    "jest-expo": "^39.0.0",
    "react-test-renderer": "^17.0.1",
    "typescript": "^4.0.5"
  },
  "private": true,
  "jest": {
    "preset": "jest-expo",
    "transformIgnorePatterns": [
      "node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|@sentry/.*)"
    ]
  }
}