由于未定义 PropTypes.node,React 应用程序崩溃
React App Crashing Due to undefined PropTypes.node
我 运行 今天在处理 node.js + 基于 react 的项目时遇到了一个问题,该项目是用 react v.15.0.0 创建的,它有几个不推荐使用的功能,所以我升级了项目以使用反应 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 有一个单独的类型检查包 'Prop-Types',我实际上试过用这样的新功能交换旧功能:
var _propType = require("prop-types");
ExternalLink.propTypes = {
children: _propType.default.PropTypes.node
};
仍然不走运,我现在一头雾水,如果有人可以就此提供建议或解决方法,我将不胜感激。谢谢。
这对我有用:
var _propType = require("prop-types");
ExternalLink.propTypes = {
children: _propType.node
};
我正在使用 create-react-app 并将 ES6 模块导入与此 CommonJS 语法交换工作正常
您只需要使用 _propTypes.node
而不是 _propType.default.PropTypes.node
var _propType = require("prop-types");
ExternalLink.propTypes = {
children: _propType.node
};
从 React 16 开始,PropTypes 被拆分到它自己的包中,该包的默认导出是 PropTypes 对象,因此您只需直接使用它而不是查找 .default.PropTypes.
我 运行 今天在处理 node.js + 基于 react 的项目时遇到了一个问题,该项目是用 react v.15.0.0 创建的,它有几个不推荐使用的功能,所以我升级了项目以使用反应 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 有一个单独的类型检查包 'Prop-Types',我实际上试过用这样的新功能交换旧功能:
var _propType = require("prop-types");
ExternalLink.propTypes = {
children: _propType.default.PropTypes.node
};
仍然不走运,我现在一头雾水,如果有人可以就此提供建议或解决方法,我将不胜感激。谢谢。
这对我有用:
var _propType = require("prop-types");
ExternalLink.propTypes = {
children: _propType.node
};
我正在使用 create-react-app 并将 ES6 模块导入与此 CommonJS 语法交换工作正常
您只需要使用 _propTypes.node
而不是 _propType.default.PropTypes.node
var _propType = require("prop-types");
ExternalLink.propTypes = {
children: _propType.node
};
从 React 16 开始,PropTypes 被拆分到它自己的包中,该包的默认导出是 PropTypes 对象,因此您只需直接使用它而不是查找 .default.PropTypes.