web-dev-qa-db-ja.com

未定義のプロパティ 'string'を読み取れません| React.PropTypes | LayoutPropTypes.js

Node_modulesフォルダーを削除して再インストールした後、LayoutPropTypes.jsファイルで理解できない問題に直面しています。

In node_modules/react-native/Libraries/StyleSheet/LayoutPropTypes.js次の変数は未定義です:var ReactPropTypes = require('React').PropTypes;

反応ネイティブ:0.45.1反応:16.0.0-alpha.12

22

React.PropTypesは非推奨になりました:

注:React.PropTypesは、React v15.5で非推奨になりました。代わりにprop-typesライブラリを使用してください。

prop-types パッケージを個別に追加する必要があります。 node_modulesフォルダーを削除してからreactバージョンをアップグレードしたものをすべて再インストールしたため、エラーが発生し始めた可能性が高いです。

31
Chase DeAnda

反応16.0.0-alpha.12を使用していると確信していますか?

反応バージョンの前に^がある場合はpackage.jsonを確認してください。もしあれば、おそらく最新の反応バージョンがインストールされています。これは現在16.0.0-alpha.13であり、あなたが言うように壊れています(自分で問題が発生しました)。バージョンの前に^があると、新しいマイナーバージョンとパッチバージョンをインストールできます。 ここで詳細を読むことができます

指定した正確なバージョンを維持するには、version。の前の^を削除するだけで、package.jsonは次のようになります。

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

変更後は、必ずnode_modulesを再インストールしてください。

11

ReactはPropTypesに同梱されなくなりました。それをインストールする必要があります。

最初にprop-typesを実行してnpm i prop-types --saveパッケージをインストールします。

次に、次のようにprop-typesパッケージをコンポーネントに使用します。

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
}

または、次のようなTypeScriptを使用している場合は、単にインターフェイスを使用します。

import * as React from 'react'

interface IAwesomeComponentProps {
    name: string
} 

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

私には同様の問題があり、解決策はありません。 「prop-types」パッケージについての回答は無意味であり、問​​題はリアクションネイティブのソースコードに由来します。これは、node_modulesフォルダー内の反応するネイティブソースを手動で修正するオプションではありません。

2
skd

これで、react-native 0.46.4に更新できます。このガイドに従ってください: https://facebook.github.io/react-native/docs/upgrading.html

私のpackage.jsonは次のようになります:

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