zoukankan      html  css  js  c++  java
  • React.memo is not a function

    最近在运行项目的时候报了一个React.memo is not a function,

    报错类似如下

    D:myCodemyProject
    ode_modules	estPackageindex.js:22
    })(React.momo(testPackage));
    
    TypeError: React.memo is not a function at Object.<anonymous>
    ...
    ...

    一番搜索后基本上得到的答案基本上都是将React升级到16.6.6以上,可是这不是我项目里的代码,是插件包里的代码。我项目里package.json文件的react已经是16.13.1了。这又是为什么了

    于是我找到了报错的文件D:myCodemyProject ode_modules estPackageindex.js在里面增加了一个console打印了react的信息。代码类似如下

    var React = require("react");
    var test = require("../test");
    console.log(React)
    function myPackage(){
      ...
      ...       
    }
    exports.default = test.default({
       ...
       ... 
    })(React.memo(myPackage));
    

      打印信息如下

    {
      ...
      version: '16.4.2',
      ...  
    }
    

      what? 为啥是16.4.2因为这是已经编译过的采用common.js规范,所以我又打印了module信息代码类似如下

    var React = require("react");
    var test = require("../test");
    console.log(React)
    console.log(module)
    function myPackage(){
      ...
      ...       
    }
    exports.default = test.default({
       ...
       ... 
    })(React.memo(myPackage));
    

      module信息如下类似

    {
    id: 'D:\myCode\myProject\node_modules\testPackge\index.js',
    exports:{},
    parent:[{...}] ,
    filename: 'D:\myCode\myProject\node_modules\testPackge\index.js',
    loaded: false,
    children: [{
      id: 'D:\Users\myName\AppData\Roaming\npm\node_modules\test-cli\node_modules\react\index.js'  
    }],
    paths:[
    'D:\myCode\myProject\node_modules\testPackge\node_modules',
    'D:\Users\myName\AppData\Roaming\npm\node_modules\test-cli\node_modules\testPackage\node_modules',
    'D:\Users\myName\AppData\Roaming\npm\node_modules\test-cli\node_modules',
    'D:\myCode\myProject\node_modules',
    'D:\myCode\node_modules',
     'D:\node_modules'
    ]
    }
    

      module信息里children就是这个模块所引入的模块信息,parent就是这个调用这个模块的信息,根据children可以看出引入的react是一个叫test-cli全局安装包里的react,那么找到这个react后查看版本果然是16.4.2。所以重新全局安装一下test-cli更新一下版本就ok了。

  • 相关阅读:
    异常日志以及非异常日志记录方法
    oracle 监测数据库是否存在指定字段
    listview禁止双击一条之后选中复选框按钮的方法
    oracle 的rowid和rownum
    修改文件的名字的写法
    使用C#读取XML节点,修改XML节点
    BZOJ 1004: [HNOI2008]Cards
    P5022 旅行 (NOIP2018)
    P5021 赛道修建 (NOIP2018)
    P5020 货币系统 (NOIP2018)
  • 原文地址:https://www.cnblogs.com/shengliang74/p/13277397.html
Copyright © 2011-2022 走看看