React.memo is not a function


最近在運行項目的時候報了一個React.memo is not a function,

報錯類似如下

D:\myCode\myProject\node_modules\testPackage\index.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:\myCode\myProject\node_modules\testPackage\index.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了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM