web-dev-qa-db-ja.com

Reactのバージョンに問題があります

Reactについてはあまり知りません。Reactで作成したアプリケーションをテストする必要があります。

gulp nodemonでサーバーを実行しようとすると問題が発生し、多くのエラーが発生します。どうやらアプリケーションは古いバージョンのReactで構築されており、一部のライブラリまたはモジュールを認識していません。プロトタイプまたはReactClassの作成方法に関してそれらのいくつかをすでに解決しましたが、 Bootstrapに関する問題の1つは解決できませんでした。

これは私が得るエラーです:

bsStyle: _propTypes2['default'].oneOf(_styleMaps2['default'].STYLES),
                                ^
TypeError: Cannot read property 'oneOf' of undefined
    at Object.<anonymous> (/home/kevin/to_check/react-blog/node_modules/react-bootstrap/lib/BootstrapMixin.js:30:43)

これは私が問題を抱えているファイルです:

'use strict';

var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
exports.__esModule = true;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _styleMaps = require('./styleMaps');
var _styleMaps2 = _interopRequireDefault(_styleMaps);
var _propTypes2 = require('prop-types');
var _reactPropTypesLibKeyOf = require('react-prop-types/lib/keyOf');
var _reactPropTypesLibKeyOf2 = _interopRequireDefault(_reactPropTypesLibKeyOf);

var BootstrapMixin = {
  propTypes: {
    /**
     * bootstrap className
     * @private
     */
    bsClass: _reactPropTypesLibKeyOf2['default'](_styleMaps2['default'].CLASSES),
    /**
     * Style variants
     * @type {("default"|"primary"|"success"|"info"|"warning"|"danger"|"link")}
     */
    bsStyle: _propTypes2['default'].oneOf(_styleMaps2['default'].STYLES),
    /**
     * Size variants
     * @type {("xsmall"|"small"|"medium"|"large"|"xs"|"sm"|"md"|"lg")}
     */
    bsSize: _reactPropTypesLibKeyOf2['default'](_styleMaps2['default'].SIZES)
  },

  getBsClassSet: function getBsClassSet() {
    var classes = {};

    var bsClass = this.props.bsClass && _styleMaps2['default'].CLASSES[this.props.bsClass];
    if (bsClass) {
      classes[bsClass] = true;

      var prefix = bsClass + '-';

      var bsSize = this.props.bsSize && _styleMaps2['default'].SIZES[this.props.bsSize];
      if (bsSize) {
        classes[prefix + bsSize] = true;
      }

      if (this.props.bsStyle) {
        if (_styleMaps2['default'].STYLES.indexOf(this.props.bsStyle) >= 0) {
          classes[prefix + this.props.bsStyle] = true;
        } else {
          classes[this.props.bsStyle] = true;
        }
      }
    }

    return classes;
  },

  prefixClass: function prefixClass(subClass) {
    return _styleMaps2['default'].CLASSES[this.props.bsClass] + '-' + subClass;
  }
};

exports['default'] = BootstrapMixin;
module.exports = exports['default'];

これは、アプリケーションに含まれるpackage.jsonファイルです。

{
  "name": "React-Isomorphic-Blog",
  "version": "1.0.0",
  "description": "React Isomorphic Blog",
  "author": "Jonathan Rossi <[email protected]>",
  "license": "MIT",
  "dependencies": {
    "alt": "^0.14.5",
    "babel": "^4.7.16",
    "body-parser": "^1.12.3",
    "cookie-parser": "^1.3.4",
    "create-react-class": "^15.6.3",
    "express": "^4.12.3",
    "express-session": "^1.10.4",
    "iso": "^4.0.2",
    "jade": "^1.9.2",
    "marked": "^1.1.0",
    "moment": "^2.10.2",
    "prop-types": "^15.7.2",
    "react": "^16.13.1",
    "react-bootstrap": "^0.26.2",
    "react-ga": "^2.1.2",
    "react-prop-types": "^0.4.0",
    "react-router": "^3.2.6",
    "superagent": "^5.2.2"
  },
  "devDependencies": {
    "browserify": "^16.5.1",
    "gulp": "^4.0.2",
    "gulp-clean": "^0.3.2",
    "gulp-concat": "^2.6.0",
    "gulp-minify-css": "^1.2.4",
    "gulp-nodemon": "^2.0.2",
    "gulp-print": "^2.0.1",
    "gulp-rename": "^1.2.2",
    "gulp-sass": "^4.1.0",
    "gulp-uglify": "^1.5.4",
    "nodemon": "^1.3.7",
    "reactify": "^1.1.0",
    "vinyl-buffer": "^1.0.0",
    "vinyl-source-stream": "^1.1.0"
  },
  "paths": {
    "app": "./src/client.js"
  },
  "dest": {
    "app": "bundle.js",
    "dist": "public/scripts/react"
  },
  "main": "bin/www.js",
  "scripts": {
    "start": "node --use_strict bin/www.js"
  }
}

私はあなたがその問題で私を助けることができることを望みます、私は本当に解決策を見つけることができませんでした。どうもありがとうございました。

4
Kevin Giraldo

React.PropTypesは、React v15.5.0以降、独自のパッケージに抽出されています。

これから issue 。修正は、代わりにprop-typesパッケージを使用することです

// bsStyle: _react2['default'].PropTypes.oneOf(_styleMaps2['default'].STYLES), // not this
bsStyle: _propTypes2['default'].oneOf(_styleMaps2['default'].STYLES) // do this after installing prop-types
1
richytong