React App Crashing由于未定义的PropTypes.node

时间:2018-04-16 19:36:14

标签: node.js reactjs web webpack react-proptypes

我今天遇到了一个问题,在使用react v.1.0.0创建node.js + react的项目时,它有几个已弃用的功能,因此我将项目升级为使用react v.16.2.0。

现在崩溃了,不能用webpack编译了:(

我的错误消息为:

    TypeError: Cannot read property 'node' of undefined
[3]     at Object.defineProperty.value (/Volumes/Develop/MyPortfolio/edward/dist/server.js:528:40)
[3]     at __webpack_require__ (/Volumes/Develop/MyPortfolio/edward/dist/server.js:20:30)
[3]     at Object.<anonymous> (/Volumes/Develop/MyPortfolio/edward/dist/server.js:406:22)
[3]     at __webpack_require__ (/Volumes/Develop/MyPortfolio/edward/dist/server.js:20:30)
[3]     at Object.defineProperty.value (/Volumes/Develop/MyPortfolio/edward/dist/server.js:342:16)
[3]     at __webpack_require__ (/Volumes/Develop/MyPortfolio/edward/dist/server.js:20:30)
[3]     at Object.<anonymous> (/Volumes/Develop/MyPortfolio/edward/dist/server.js:185:14)
[3]     at __webpack_require__ (/Volumes/Develop/MyPortfolio/edward/dist/server.js:20:30)
[3]     at Object.defineProperty.value (/Volumes/Develop/MyPortfolio/edward/dist/server.js:56:16)
[3]     at __webpack_require__ (/Volumes/Develop/MyPortfolio/edward/dist/server.js:20:30)
[3] [nodemon] app crashed - waiting for file changes before starting...

我追溯到/ my project / dist / server.js文件,这是导致崩溃的行:

ExternalLink.propTypes = {
      children: _react2.default.PropTypes.node
    };

_react2声明为:

var _react = __webpack_require__(3);

var _react2 = _interopRequireDefault(_react);

我做了一些研究,发现React 16.x有一个单独的包用于类型检查&#39; Prop-Types&#39;,我实际上尝试用旧的函数交换旧函数,如下所示:

   var _propType = require("prop-types");

    ExternalLink.propTypes = {
      children: _propType.default.PropTypes.node
    };

仍然没有运气,我现在不在乎,如果有人可以提供建议或解决方法,我将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

这对我有用:

var _propType = require("prop-types");

ExternalLink.propTypes = {
  children: _propType.node
};

我正在使用create-react-app并使用此CommonJS语法交换ES6模块导入正常工作

答案 1 :(得分:0)

您只需使用_propTypes.node代替_propType.default.PropTypes.node

var _propType = require("prop-types");

ExternalLink.propTypes = {
 children: _propType.node
};

自React 16以来,PropTypes被拆分为自己的包,并且该包的默认导出是PropTypes对象,因此您只需直接使用它而不是查找.default.PropTypes.