mushan0x0/wxapp-api-interceptors

request:fail parameter error: parameter.url should be String instead of Undefined;

Closed this issue · 10 comments

在使用wx.request.post接口时报出如标题所示的错误
我的测试代码如下:
wx.request.post('http://localhost:9000/login/wxmp', {code: '12345'})
代码报错:
default
使用微信自带的wx.request是正常的
目前使用的微信调试基础库是2.0.9,本包版本1.3.2,mpvue版本1.0.12,且已经在main.js中加入了wxApiInterceptors()调用

@mealayaria 你的拦截器里返回的参数是不是把url去掉了

我是参考文档说明,只调用了wxApiInterceptors(),没有做任何的配置
我看文档的感觉是必须要先调用一下wxApiInterceptors(),才能使用提供的接口,是我理解错了吗?

@mealayaria 你的理解没错,不过很奇怪,我无法复现这个bug,我觉得可能是安装包时出现了问题,你重装下1.3.3版本试试看

重新安装依然报错,我尝试新建一个项目,问题依然存在

@mealayaria 谢谢你,我发现错误了并在1.3.4修复了这个bug

现在可以请求了,但是出现了新的问题,我上面那样写法的参数无法传出去了,试了一下只有写成
{data: {code: '12345'}}
才可以,这样感觉不是很方便,麻烦你再确认一下是不是涉及到这一块的改动了

@mealayaria 参数确实是这样传的,和正常的调用的差别就是success、complete和fail这几个参数

@mealayaria 你可以在拦截器你自定义成你自己想要的调用方式

这样的话文档这一段就会调用失败了

wx.showLoading({title: '登录中...'})
    .then(wx.login)
    .then(data => wx.request.post('/login', {data}))
    .then(() => wx.showToast({title: '登录成功'}))
    .catch(() => wx.showToast({title: '登录失败'}))
    .finally(wx.hideLoading);

除了另一个issue中提到的showLoading的问题之外,wx.request.post('/login', {data})这一段也会报错,跟我上边遇到的问题一样

又试了一下,是我自己搞错了……按我的想法的话应该是写成wx.request.post('/login', data)的,文档并没有错,我自己来自定义拦截器吧,谢谢你的耐心回复!