我今天遇到了一个问题,在使用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
};
仍然没有运气,我现在不在乎,如果有人可以提供建议或解决方法,我将不胜感激。感谢。
答案 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.