请教,插件升级中遇到问题
W4J1e opened this issue · 3 comments
您好,得知 picgo 和 picgo-core 更新,弃用了 request 换成了 axios ,我尝试更新插件。
插件地址是:https://github.com/W4J1e/picgo-plugin-dogecloud
这是由 s3 插件改来的版本,后续有开发者热心帮助,解决了每次上传都要获取 sessionToken
的问题,经过多次更新之后,感觉代码变成了屎山。在多吉云的 api 文档里,存在一个 Credentials
属性,在更新 picgo 之后直接使用旧版插件报错如下:
------Error Stack Begin------ TypeError: Cannot read properties of undefined (reading 'credentials') at Object.handle (C:\Users\W4j1e\AppData\Roaming\picgo\node_modules\picgo-plugin-dogecloud\dist\index.js:139:19) at async $e.doUpload (E:\Program Files\picgo\resources\app.asar\node_modules\picgo\dist\index.cjs.js:1:17198) at async $e.start (E:\Program Files\picgo\resources\app.asar\node_modules\picgo\dist\index.cjs.js:1:15969) at async Tt.upload (E:\Program Files\picgo\resources\app.asar\node_modules\picgo\dist\index.cjs.js:1:71270) at async Object.upload (E:\Program Files\picgo\resources\app.asar\background.js:2:653584) at async jn (E:\Program Files\picgo\resources\app.asar\background.js:2:656251) -------Error Stack End-------
我按照 axios
的文档修改了一些 option
,在 packege 和 utils 里去除了现有的 request 引入,之后在本地测试,还是有上述的报错。
请问,如果在需要插件代替实现获取sessionToken
的情况下,我需要怎么做,才能使插件适配新版的 picgo ?
万分感谢。
首先请参考 PicGo 开发文档:https://picgo.github.io/PicGo-Core-Doc/zh/api/#request
其次,出现报错的地方的前后,你应该自行通过断点调试或者日志来调试,我无法判断具体图床的api业务逻辑。
更换底层库的前后,差异其实不大, PicGo 底层做了很多抹平差异的工作,参考 PicGo 的文档,你只需要改动很少一部分代码即可。
学会调试也是开发插件很关键的一环。
你的代码的报错的问题是你在一个为 undefined
的变量上尝试获取他的 credentials
以及 credentials
后续的子属性会报错。搜一下你代码里哪里需要获取 credentials
, 再看看这个变量为何是 undefined
,其实问题不难排查。
@Molunerfinn 感谢解答。credentials
是在插件通过api获取一些 key 的时候用到的,我是一个业余的人,算不上开发者,但是感谢您提供了思路,我再去调试看看。
再次感谢。