TypeError: undefined is not an object (evaluating 'ReactSharedInternals.hasOwnProperty')
TypeError: undefined is not an object (evaluating 'ReactSharedInternals.hasOwnProperty')
我正在自己构建我的第一个 React Native 应用程序。当我尝试在我的 RN 应用程序中设置导航时,我 运行 遇到了几个关于导入 RN 库的模块错误。我设法解决了它们。然而,现在我面临着一个非常奇怪的红屏错误,我(f运行k)不知道从哪里开始调试。
错误看起来像 this.
我不知道这是什么意思,我检查了错误屏幕上提到的文件,但我无法理解它。它们似乎是我不应该修改的非常低级的文件。
我 npm i <library-here>
和 react-native link <library-here>
都没有解决问题。我已经销毁并重新安装了 npm,但也没有用。我还重新启动了我的前端服务器,但这似乎是我的项目设置所固有的。
我觉得这与我的 package.json
相关,因为我不得不更改 src
中的 react-navigation
版本(我的 React Native 文件夹包含前端文件) 到 2.14.0
。我还更改了项目根目录中的 package.json
,因此 react-navigation
使用的是最新的稳定版本:^4.0.10
.
这是我的 src/package.json
:
{
"name": "src",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"test": "jest",
"lint": "eslint ."
},
"dependencies": {
"expo-image-picker": "^8.0.0",
"react": "^16.4.1",
"react-native": "0.61.5",
"react-native-screens": "^2.0.0-alpha.19",
"react-navigation": "2.14.0",
"react-navigation-stack": "^1.10.3"
},
"devDependencies": {
"@babel/core": "^7.7.5",
"@babel/runtime": "^7.7.5",
"@react-native-community/eslint-config": "^0.0.5",
"babel-jest": "^24.9.0",
"eslint": "^6.7.2",
"jest": "^24.9.0",
"metro-react-native-babel-preset": "^0.57.0",
"react-test-renderer": "16.9.0"
},
"jest": {
"preset": "react-native"
}
}
这是我的项目根目录中的 package.json
,我更改了 react-navigation
:
{
"dependencies": {
"react-native-gesture-handler": "^1.5.2",
"react-native-reanimated": "^1.4.0",
"react-native-screens": "^2.0.0-alpha.19",
"react-navigation": "^4.0.10"
}
}
如果需要,这是我的 AppNavigator.js
,我在 App.js
:
中调用它
import { createAppContainer, createSwitchNavigator } from "react-navigation";
import { createStackNavigator } from "react-navigation";
import { Platform } from "react-native";
// Importing my screens here.
import LoginCreateAccountScreen from "../screens/LoginCreateAccountScreen";
import CreateAccountScreen from "../screens/CreateAccountScreen";
import LoginScreen from "../screens/LoginScreen";
import SplashScreen from "../screens/SplashScreen";
const MainNavigator = createStackNavigator({
SplashScreen: {screen: SplashScreen},
LoginCreateAccountScreen: {screen: LoginCreateAccountScreen},
LoginScreen: {screen: LoginScreen},
CreateAccountScreen: {screen: CreateAccountScreen},
});
export default createAppContainer(
createSwitchNavigator(
{
// You could add another route here for authentication.
// Read more at https://reactnavigation.org/docs/en/auth-flow.html
SplashScreen: SplashScreen,
LoginCreateAccountScreen: LoginCreateAccountScreen,
LoginScreen: LoginScreen,
CreateAccountScreen: CreateAccountScreen
},
{
initialRouteName: 'SplashScreen' // Entry
}
)
);
我的App.js
:
import React, { Component } from 'react';
import AppNavigator from './navigation/AppNavigator';
export default class App extends Component {
render() {
return <AppNavigator />;
}
}
感谢您提供的所有帮助。谢谢!
这可能是因为 react
版本与 react-native
版本不匹配。
尝试将其更新为 react@16.0.0-alpha.12
,如下所示:
npm install react@16.0.0-alpha.12
或者将 package.json
中的 react@16.0.0-alpha.6
更改为 react@16.0.0-alpha.12
和 运行 npm install
。
我正在自己构建我的第一个 React Native 应用程序。当我尝试在我的 RN 应用程序中设置导航时,我 运行 遇到了几个关于导入 RN 库的模块错误。我设法解决了它们。然而,现在我面临着一个非常奇怪的红屏错误,我(f运行k)不知道从哪里开始调试。
错误看起来像 this.
我不知道这是什么意思,我检查了错误屏幕上提到的文件,但我无法理解它。它们似乎是我不应该修改的非常低级的文件。
我 npm i <library-here>
和 react-native link <library-here>
都没有解决问题。我已经销毁并重新安装了 npm,但也没有用。我还重新启动了我的前端服务器,但这似乎是我的项目设置所固有的。
我觉得这与我的 package.json
相关,因为我不得不更改 src
中的 react-navigation
版本(我的 React Native 文件夹包含前端文件) 到 2.14.0
。我还更改了项目根目录中的 package.json
,因此 react-navigation
使用的是最新的稳定版本:^4.0.10
.
这是我的 src/package.json
:
{
"name": "src",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"test": "jest",
"lint": "eslint ."
},
"dependencies": {
"expo-image-picker": "^8.0.0",
"react": "^16.4.1",
"react-native": "0.61.5",
"react-native-screens": "^2.0.0-alpha.19",
"react-navigation": "2.14.0",
"react-navigation-stack": "^1.10.3"
},
"devDependencies": {
"@babel/core": "^7.7.5",
"@babel/runtime": "^7.7.5",
"@react-native-community/eslint-config": "^0.0.5",
"babel-jest": "^24.9.0",
"eslint": "^6.7.2",
"jest": "^24.9.0",
"metro-react-native-babel-preset": "^0.57.0",
"react-test-renderer": "16.9.0"
},
"jest": {
"preset": "react-native"
}
}
这是我的项目根目录中的 package.json
,我更改了 react-navigation
:
{
"dependencies": {
"react-native-gesture-handler": "^1.5.2",
"react-native-reanimated": "^1.4.0",
"react-native-screens": "^2.0.0-alpha.19",
"react-navigation": "^4.0.10"
}
}
如果需要,这是我的 AppNavigator.js
,我在 App.js
:
import { createAppContainer, createSwitchNavigator } from "react-navigation";
import { createStackNavigator } from "react-navigation";
import { Platform } from "react-native";
// Importing my screens here.
import LoginCreateAccountScreen from "../screens/LoginCreateAccountScreen";
import CreateAccountScreen from "../screens/CreateAccountScreen";
import LoginScreen from "../screens/LoginScreen";
import SplashScreen from "../screens/SplashScreen";
const MainNavigator = createStackNavigator({
SplashScreen: {screen: SplashScreen},
LoginCreateAccountScreen: {screen: LoginCreateAccountScreen},
LoginScreen: {screen: LoginScreen},
CreateAccountScreen: {screen: CreateAccountScreen},
});
export default createAppContainer(
createSwitchNavigator(
{
// You could add another route here for authentication.
// Read more at https://reactnavigation.org/docs/en/auth-flow.html
SplashScreen: SplashScreen,
LoginCreateAccountScreen: LoginCreateAccountScreen,
LoginScreen: LoginScreen,
CreateAccountScreen: CreateAccountScreen
},
{
initialRouteName: 'SplashScreen' // Entry
}
)
);
我的App.js
:
import React, { Component } from 'react';
import AppNavigator from './navigation/AppNavigator';
export default class App extends Component {
render() {
return <AppNavigator />;
}
}
感谢您提供的所有帮助。谢谢!
这可能是因为 react
版本与 react-native
版本不匹配。
尝试将其更新为 react@16.0.0-alpha.12
,如下所示:
npm install react@16.0.0-alpha.12
或者将 package.json
中的 react@16.0.0-alpha.6
更改为 react@16.0.0-alpha.12
和 运行 npm install
。