web-dev-qa-db-fra.com

Impossible de lire la propriété 'chaîne' de non défini | React.PropTypes | LayoutPropTypes.js

Après avoir supprimé et réinstallé mon dossier node_modules, je suis confronté à un problème que je ne comprends pas dans le fichier LayoutPropTypes.js.

Dans node_modules/react-native/Libraries/StyleSheet/LayoutPropTypes.js La variable suivante n'est pas définie: var ReactPropTypes = require('React').PropTypes;

react-native: 0.45.1 réagir: 16.0.0-alpha.12

22

React.PropTypes est maintenant obsolète:

Remarque: React.PropTypes est obsolète à partir de React v15.5. Utilisez plutôt la bibliothèque prop-types.

Vous devez ajouter le package prop-types séparément maintenant. L'erreur a probablement commencé à apparaître car vous avez supprimé votre node_modules dossier puis a réinstallé tout ce qui a mis à jour votre version react.

31
Chase DeAnda

Etes-vous absolument sûr que vous utilisez react 16.0.0-alpha.12?

Vérifiez votre package.json si vous avez un ^ avant la version de réaction, si vous l’avez déjà, il a probablement installé la dernière version de réaction, qui est actuellement 16.0.0-alpha.13, dans lequel ça casse comme tu le dis (je viens d'avoir le problème moi-même). Ayant le ^ avant la version, lui permet d’installer les nouvelles versions mineures et correctives. Vous pouvez en lire plus ici .

Pour conserver la version exacte que vous spécifiez, supprimez simplement le ^ avant la version, afin que votre package.json ressemble à ceci:

  "dependencies": {
    "react": "16.0.0-alpha.12",
    "react-native": "0.45.1",
  }

N'oubliez pas de réinstaller vos node_modules après vos modifications.

11

React n'est plus livré avec PropTypes. Vous devrez l'installer.

Installez d'abord le prop-types package en exécutant npm i prop-types --save.

Ensuite, utilisez le prop-types package dans votre composant comme ceci:

import React from 'react'
import PropTypes from 'prop-types'

export const AwesomeComponent = props => {
    return(
        <h1>Hello {props.name}</h1>
    )
}

AwesomeComponent.propTypes = {
    name: PropTypes.string.isRequired
}

Ou utilisez simplement une interface si vous utilisez TypeScript comme ceci:

import * as React from 'react'

interface IAwesomeComponentProps {
    name: string
} 

export const AwesomeComponent: React.FC<IAwesomeComponentProps> = props => {
    return(
        <h1>Hello {props.name}</h1>
    )
}
10
lomse

J'ai le même problème, pas de solution. Les réponses concernant le paquet 'prop-types' n'ont pas de sens, le problème vient du code source de react-native. Ce n'est pas une option pour corriger manuellement le code source natif de réaction dans le dossier node_modules.

2
skd

Vous pouvez maintenant effectuer la mise à jour vers la version native 0.46.4, suivez simplement ce guide: https://facebook.github.io/react-native/docs/upgrading.html

mon package.json ressemble à ceci:

"react": "16.0.0-alpha.12",
"react-native": "0.46.4",
0
Erick Garcia