Javascript 类型脚本错误JSX元素类型';视图';不是JSX元素的构造函数
程序本身运行良好,但Typescript在我的组件返回函数中用红色标出了许多项。特别是我的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
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
}
}