如果你的RN也不把object.getOwnPropertyDescriptors(arguments[i])当个正经方法

494 阅读1分钟

记一次RN的魔幻调试

事故

RN项目在安卓平台测试时出现如下错误:

undefined is not a function(evaluation 'object.getOwnPropertyDescriptors(arguments[i])')

处理

  1. 调试时打开远程调试模式🤯(WTF?很🐶?没有错,但他就是管用...)

  2. 更改babel依赖模块源码

    cd node_modules/@babel/runtime/helpers

    open objectSpread2.js

    - Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i]));
    + var source = arguments[i] != null ? arguments[i] : {};
    + var ownKeys = Object.keys(source);
    
    + if (typeof Object.getOwnPropertySymbols === 'function') {
    +       ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
    +       return Object.getOwnPropertyDescriptor(source, sym).enumerable;
    +   }));
    + }
    
    + ownKeys.forEach(function (key) {
    +       defineProperty(target, key, source[key]);
    + });
    

分析

好像是babel在运行时与getOwnPropertyDescriptors这个方法不兼容导致的,但是,,,iOS环境咋没有问题呢?🥴,emmmmmm,我选择狗带。。。