You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native v0.34.1旧项目编译报错:undefined is not an object(evaluating 'PropTypes.number')

定位React Native旧项目PropTypes错误的具体文件步骤

刚接触旧版React Native遇到这种红屏错误很正常,我之前处理过类似的v0.3x版本项目,给你几个实用的步骤来定位出错文件:

1. 查看红屏的完整调用栈

旧版本React Native的红屏默认可能只显示核心错误信息,你需要点击红屏底部的 "Tap to view stack trace"(或类似的展开按钮),就能看到详细的调用栈日志。这里面会列出错误发生时的代码执行路径,包含具体的文件路径和行号。

2. 筛选项目自身的文件

调用栈里会混杂很多React Native核心库的代码(比如node_modules/react-native/下的文件),你要重点找属于你项目目录的文件(比如src/、components/这类自定义目录下的文件),这些就是可能出现PropTypes错误的地方。

举个例子,如果调用栈里出现MyCustomComponent.js:25,那你直接去这个文件的第25行检查PropTypes的写法即可。

3. 结合Chrome调试工具精准定位

如果红屏的调用栈不够清晰,你可以用远程调试来进一步排查:

  • 摇一摇设备(或在模拟器里按Ctrl+M/Cmd+D)打开调试菜单;
  • 选择 "Debug JS Remotely",Chrome会自动打开调试页面;
  • 在Chrome的Sources面板里,你能看到更清晰的调用栈,点击对应的文件就能直接跳转到出错的代码行,还能设置断点调试。

4. 排查可能的错误原因

找到文件后,重点检查PropTypes的写法:

  • React v15.3.2的PropTypes是挂载在React对象上的,正确写法应该是:
    import React from 'react';
    // ...
    MyComponent.propTypes = {
      count: React.PropTypes.number
    };
    
    如果写成了PropTypes.number而没有从React上获取,就会触发这个错误。
  • 另外还要检查第三方依赖:有些第三方库可能强行使用了独立的prop-types包,而你的旧版本RN不兼容,这时候可以查看package.json里的依赖,尝试降级对应的库版本。

内容的提问来源于stack exchange,提问作者Saurabh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:58:56