一、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.js
,package.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