본문 바로가기

개발하자

유형 스크립트 오류 JSX 요소 유형 '보기'가 JSX 요소에 대한 생성자 함수가 아닙니다

반응형

유형 스크립트 오류 JSX 요소 유형 '보기'가 JSX 요소에 대한 생성자 함수가 아닙니다

프로그램 자체는 정상적으로 실행되지만, Typescript는 내 구성 요소에 대한 내 반환 기능에 빨간색으로 많은 항목을 밑줄로 표시하고 있다. 구체적으로 내 수입에서 나오는 모든 것.

, 등과 같은 것들은 이러한 "오류"를 던지고 있다. 나는 앱이 전혀 문제 없이 실행되기 때문에 인용문의 오류를 말한다. 내 IDE(VS 코드) 내의 타이프스크립트가 유일하게 불만이다. 내가 (오른쪽 하단 상태 표시줄 선택기를 통해) 자바스크립트 리액트 또는 타입스크립트 리액트를 선택하면 이러한 오류가 발생한다. 다음은 예입니다:

Text Problem

여기 내 소포의 중요한 부분들이 있다.json

"scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject"
  },
  "dependencies": {
    "@react-navigation/native": "^5.7.6",
    "@react-navigation/stack": "^5.9.3",
    "expo": "~39.0.2",
    "expo-status-bar": "~1.0.2",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-native": "https://github.com/expo/react-native/archive/sdk-39.0.3.tar.gz",
    "react-native-screens": "~2.10.1",
    "react-native-web": "~0.13.12",
    "react-native-gesture-handler": "~1.7.0",
    "react-native-reanimated": "~1.13.0",
    "react-native-safe-area-context": "3.1.4",
    "@react-native-community/masked-view": "0.1.10"
  },
  "devDependencies": {
    "react-native-web": "~0.13.7",
    "@types/react": "*",
    "@types/react-dom": "*",
    "@types/react-native": "*",
    "typescript": "~3.9.5"
  },

그리고 다음은 이러한 오류를 처리하는 파일의 모양입니다:

import { StatusBar } from "expo-status-bar";
import React, { useState } from "react";
import { StyleSheet, Text, View, TextInput, Button } from "react-native";

const SummaryScreen = ({ navigation }) => {
    const accountDetailsPage = () => {
        navigation.navigate("Account Details");
    };

    const contactDetailsPage = () => {
        navigation.navigate("Contact Details");
    };

    return (
        <View style={styles.container}>
            <Text>HERE IS A BUNCH OF TEXT</Text>
            <Button title="Account Details" onPress={accountDetailsPage} />
            <Button title="Contact Details" onPress={contactDetailsPage} />
        </View>
    );
};

const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: "#fff",
        flexDirection: "column",
        alignItems: "center",
        justifyContent: "center",
    },
});

export default SummaryScreen;

다음과 같은 구성 요소에서 이러한 오류가 발생하지 않도록 주의해야 합니다

여기 내 tsconfig도 있다:

{
    "compilerOptions": {
        "allowSyntheticDefaultImports": true,
        "jsx": "react-native",
        "lib": ["dom", "esnext"],
        "moduleResolution": "node",
        "noEmit": true,
        "skipLibCheck": true,
        "resolveJsonModule": true,
        "strict": true
    }
}

다소 관련이 있는데, VS 코드의 어떤 것이 모듈을 찾을 수 없다고 불평하고 있지만 실행 시에도 오류 없이 잘 작동한다




문제는 VS 코드가 잘못된 오래된 버전의 타입스크립트를 사용하고 있다는 것이었다. 나는 그것이 어떻게 그렇게 설정되었는지, 또는 어떻게 그것이 여전히 완전한 출시가 끝난 버전을 가지고 있는지 확신할 수 없다. 간단한 수정이지만 진단이 거의 불가능합니다. 내가 고친 곳은 여기야:

enter image description here

보시다시피 VS 코드 자체에 버전 2.7.2를 설치하고 선택했습니다. 나는 지금 3.9.7을 사용했고 그 모든 오류들이 사라졌다.




리액트 네이티브에서 타이프스크립트를 사용하는 경우 디버그하기가 정말 힘들다. 당신의 vscode 하단에는 타이프스크립트가 아니라고 쓰여 있어야 한다. 를 누르고 Typescript Jsx를 선택합니다.


반응형