Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类型脚本错误JSX元素类型';视图';不是JSX元素的构造函数_Javascript_Reactjs_Typescript_React Native_Expo - Fatal编程技术网

Javascript 类型脚本错误JSX元素类型';视图';不是JSX元素的构造函数

Javascript 类型脚本错误JSX元素类型';视图';不是JSX元素的构造函数,javascript,reactjs,typescript,react-native,expo,Javascript,Reactjs,Typescript,React Native,Expo,程序本身运行良好,但Typescript在我的组件返回函数中用红色标出了许多项。特别是我的react nativeimport中的任何内容 任何像视图、按钮之类的东西都会抛出这些“错误”。我用引号表示错误,因为应用程序运行时没有任何问题。我的IDE(VS代码)中的Typescript是唯一抱怨的东西。如果我选择(通过右下角的状态栏选择器)JavaScript React或TypeScript React,它会抛出这些错误。以下是一个例子: 下面是我的package.json的重要部分 &quo

程序本身运行良好,但Typescript在我的组件返回函数中用红色标出了许多项。特别是我的
react native
import中的任何内容

任何像
视图
按钮
之类的东西都会抛出这些“错误”。我用引号表示错误,因为应用程序运行时没有任何问题。我的IDE(VS代码)中的Typescript是唯一抱怨的东西。如果我选择(通过右下角的状态栏选择器)JavaScript React或TypeScript React,它会抛出这些错误。以下是一个例子:

下面是我的package.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;

有些相关,VS代码中的某些内容抱怨它找不到useState的模块,但在运行时也可以正常工作,没有错误

问题是VS代码使用了错误的、非常旧的TypeScript版本。我不知道它是如何被设置成这样的,或者它是如何仍然有一个版本是在一个完整的发布之后。简单的修复,但几乎无法诊断。这里是我修复它的地方:


正如您所看到的,我在VS代码本身上安装了2.7.2版,并且选择了该版本。我现在使用了3.9.7,所有这些错误都消失了。

愚蠢的问题,但是您安装了所有依赖项(包括开发依赖项)还是只安装了产品依赖项?我还注意到您在依赖项和开发依赖项中都有
react native web
;有什么原因吗?不幸的是,不能用你发布的内容复制。我确实安装了所有新的东西,我找到了答案。由于某种原因,VS代码使用了非常旧的Typescript版本,并且没有使用我在Tconfig中设置的Typescript版本。一个简单的修复,但很难诊断和确定。
{
    "compilerOptions": {
        "allowSyntheticDefaultImports": true,
        "jsx": "react-native",
        "lib": ["dom", "esnext"],
        "moduleResolution": "node",
        "noEmit": true,
        "skipLibCheck": true,
        "resolveJsonModule": true,
        "strict": true
    }
}