Skip to content
This repository has been archived by the owner on Apr 15, 2021. It is now read-only.

所依赖的react-native-camera为旧版本propType不在支持 #24

Closed
ghost opened this issue Nov 12, 2017 · 20 comments
Closed

所依赖的react-native-camera为旧版本propType不在支持 #24

ghost opened this issue Nov 12, 2017 · 20 comments

Comments

@ghost
Copy link

ghost commented Nov 12, 2017

该插件所依赖的react-native-camera为0.7.0版本,该版本用到的propType已经在最新的react-native中移除,目前react-native-camera已经升级至0.12.0版本修复了propType这一块,请作者更新下自己的依赖库版本不然其他人使用会报错

@MephistoDemon
Copy link

请问下“最新的react-native”是指多少版本的?我在react-native 0.48.0下跑没问题

@ghost
Copy link
Author

ghost commented Nov 17, 2017

react-native@0,49以上的版本,propType已经被单独抽了出来,0.49版本使用会报错undefined

@musicode
Copy link

+1,求作者修复一下吧

@yxwandroid
Copy link

求作者修复 我也遇到这个问题

@yxwandroid
Copy link

err

@alertross
Copy link

+1 修复下这个吧,不然用不了呀

@alertross
Copy link

@yxwandroid 我们自己有办法解决吗

@musicode
Copy link

作者写了这个库,做完了宣传,赚到了 Star,就再也不管它死活了。。。

@TBoyLi
Copy link

TBoyLi commented Feb 5, 2018

@yxwandroid 你可以切换到作者的版本看一下。我也遇到这样的问题

@yxwandroid
Copy link

yxwandroid commented Feb 5, 2018

@TBoyLi TB

PropTypes问题解决方式

QRCodeScanner
https://reactjs.org/docs/typechecking-with-proptypes.html
import React, {
PropTypes
Component,
} from 'react'

修改成
import PropTypes from 'prop-types';

这个是解决方式

@mytac
Copy link

mytac commented Feb 5, 2018

哈哈赞同楼上@yxwandroid ,已经解决问题了~

在自己的项目中安装调好现版本react-native-camera之后,把作者写好的源码QRScanner.js复制放到自己的文件下,然后把源码中的React.PropTypes都改成PropTypes就好了。

作者好长时间都不活跃了,即使有issue也懒得去维护了吧:flushed:

@TBoyLi
Copy link

TBoyLi commented Feb 6, 2018

@yxwandroid 你的rn版本和react-native-camera版本是多少。最新的react-native-camera版本已经是import PropTypes from 'prop-types' 啦

@IvanAquino
Copy link

Change
import {PropTypes} from 'react'
import PropTypes from 'prop-types'

React.PropTypes => PropTypes

@zhaobingdd
Copy link

感谢 @hiteamLiuLiXue @IvanAquino @mytac
看了几位的解释
先把 react-native-camera 升级到了 0.12.0
然后把作者的源码QRScanner.js复制放到自己的文件下
然后修改 源码QRScanner.js
import PropTypes from 'prop-types'
React.PropTypes => PropTypes

最后自己引入的时候由
import {QRScannerView}
改为
import QRScannerView
完成。
刚入门react-native 然后结果一个开发到一半的项目,各种bug 我天 更新太快了

@EthanLin-TWer
Copy link
Contributor

EthanLin-TWer commented Mar 10, 2018

正在升级 RN 到最新版,同时把 React 升到 16,同遇到这个问题。梳理一下与各位同学分享:

问题

加载的时候提示错误 undefined is not an object(evaluating '_react2.PropTypes.oneOfType')

经定位(全局搜索),发现是本库所 引用 的依赖 react-native-camera 所致,该库仍然在使用 React.PropTypes。另外,本库自身也使用了 React.PropTypes。而 React.PropTypes 在 React 16 后被迁移到单独的 prop-types 库。react-native-camera 最新的 0.10.0 以上的版本 已修复这个问题,但本库未将该依赖更新到最新,因此会出现前面所述的问题。

受影响人群

  • 打算升级到 RN 0.50.0+ 版本(这个版本将 React 升到了16)、且正在使用本库 1.0.1 版本及以下的同学
  • 打算升级到 React 16.0+ 版本、且正在使用本库 1.0.1 版本及以下的同学

解决方案

  1. 将本库对 PropTypes 的引用迁移到 prop-types
  2. 升级 react-native-camera 依赖至 0.10.0 或以上

解决这个问题,需要做以上两个改动(可参考这里)。可能的解决方案如下:

  • 等作者做改动并更新本库版本
  • 自己 fork 一份仓库自行修复,然后使用不同的包名或命名空间,npm publish 到自己的 npm registry,并引用自己发布上去的这个新包(比如 这里
  • 直接拷贝本库源码至项目,自行修改和引用
  • 本地将 node_modules/ac-qrcode/node_modules/react-native-camera/index.js 下的 import React, { Component, PropTypes } 修改为
    import React, { Component } from 'react'
    import PropTypes from 'prop-types'

个人觉得各方案可维护性依次递减。

更新

作者已经合并了修复的 提交 到 master 上。等作者把新的版本 publish 到 npm 仓库上,这个 issue 就可以 close 了。

@youngjuning
Copy link

划重点

作者估计不会再更新了,小弟修复了这个BUG 并发了一个新包:yarn add ac-qrcode-rn

@shaoting0730
Copy link

@youngjuning 赞,使用你的成功了.

@shaoting0730
Copy link

@linesh-simplicity 作者好像已经放弃该库了.....

@EthanLin-TWer
Copy link
Contributor

@pheromone @MarnoDev

其实几个月前作者合并了修复的 PR,但是还没有把它 publish 到 npm。艾特一下作者,有空可以 npm publish 一下哟,这个影响范围较大的 issue 就可以 close 了。

@jasonzhangdong
Copy link

@zhaobingdd 按你的方法,是不是不需要ac-qrcode这个了,直接把QRScanner.js放入项目中????

@MarnoDev MarnoDev reopened this Aug 20, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests