【opensea】opensea-js 升级 Seaport v1.4 导致的问题及解决笔记

一、opensea 协议升级导致旧包不能使用了

我使用的是 “opensea-js”: "^4.0.12” 版本当SDK。于2023年3月9日之后,不能使用了,需要升级到 Seaport v1.4 协议的包。

报错如下:

Error: API Error 400: Please provide an OPEN order type when using 0x004c00500000ad104d7dbd00e3ae0a5c00560c00 on Seaport v1.4 - you provided: PARTIAL_RESTRICTED (3), please set it to be FULL_OPEN (0) or PARTIAL_OPEN (1)
TypeError: Cannot read properties of null (reading 'toHexString')

二、opensea 升级公告

https://twitter.com/apiopensea/status/1631416147865382913?cxt=HHwWgsDR5fiV-qMtAAAA
在这里插入图片描述

三、“opensea-js”: “^4.0.16” 版本的问题:“Unsupported protocol”

按照官方公告,我将 opensea-js 包升级到 4.0.16 版本,但仍然出现问题 "Unsupported protocol"。查找SDK源码,发现具体表现在,1、地址大小写不匹配,2、方法用错了。源码如下所示:
在这里插入图片描述
在这里插入图片描述
在 Node.js 中,使用 in 操作符来判断一个元素是否在一个对象的属性中存在,而不是用于判断一个元素是否在一个数组中存在。
如果要判断一个元素是否在一个数组中,可以使用数组的 includes 方法。

const arr = ["a", "b"];
if (arr.includes("a")) {
    
    
  console.log("a is in the array.");
} else {
    
    
  console.log("a is not in the array.");
}

四、“opensea-js”: “^4.0.23” 版本的问题: 导入包失败

将SDK升级到最新版本后,发现无法导入,检测SDK的package.json和包结构后发现:
1、包结构的路径为 lib/src/index.jspackage.json 中路径为 lib/index.js。下图为node_modules文件夹下的opensea-js包的结构:
在这里插入图片描述
下图为opensea-js包中 package.json 中路径参数:
在这里插入图片描述

2、修复:将 package.json 中值修改为:
在这里插入图片描述

五、2023-03-11补充:新版 “opensea-js”: “^4.0.24” 已修复上述问题

npm update opensea-js --save

升级包版本即可。

六、参考

https://github.com/ProjectOpenSea/opensea-js/blob/master/src/sdk.ts#L205
https://github.com/ProjectOpenSea/opensea-js/issues/869#issuecomment-1463045031

猜你喜欢

转载自blog.csdn.net/tz_zs/article/details/129443457