收藏
回答

封装请求fetch,小程序开发环境正常,上线环境真机报错?


export default fetch = (url, data = {}, method, headers, timeout) => {

return new Promise((resolve, reject) => {

wx.getStorage({

key: 'baseUrl',

success: (res) => {

//发送请求

wx.request({

url: `${res.data}${url}`,

data: data,

method: method,

header: headers,

timeout: timeout,

success: res => {

resolve(res)

let warning = res.data.HttpMessage

if (warning == '身份验证失败,拒绝访问') {

wx.hideLoading();

wx.showModal({

title: '提示',

content: '身份验证失败,是否重新登录?',

confirmText: "确认",

cancelText: "取消",

success: (res) => {

if (res.confirm) {

wx.redirectTo({

url: 'pages/logs/logs'

});

} else if (res.cancel) {


}

}

});

}

},

fail: (err) => {

reject(err);

console.log(err)

},

complete: (res) => {

// wx.hideLoading()

}


})

}

})

})

}

不支持吗,开发正常,最近又有更新吗,上线就不行了

最后一次编辑于  09-09  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

4 个回答

  • 小时光
    小时光
    09-09

    可以把文件发给我一份吗,我来看看,519016608@qq.com

    09-09
    赞同 1
    回复 2
    • 通
      09-09
      老兄这个没法给,
      09-09
      1
      回复
    • 小时光
      小时光
      09-09回复

      具体跟踪了下可以了,方案如下:

      //logs.js
      const util = require('../../utils/util.js')
      // import fetch from '../../utils/fetch.js'
      const {fetch} = require('../../utils/fetch.js')
      const api = require('../../apis/api.js')
       
      Page({
        data: {
          res: '',
          logs: []
        },
        onLoad: function () {
          this.setData({
            logs: (wx.getStorageSync('logs') || []).map(log => {
              return util.formatTime(new Date(log))
            })
          })
          console.log(api.getprojects);
          fetch(api.getprojects,{},'post',{},5000).then((res)=>{
            console.log(res)
            this.setData({
              res: JSON.stringify(res)
            })
          });
        }
      })


      09-09
      2
      回复
  • 娇华
    娇华
    09-09

    可以提供appid和复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)?

    09-09
    赞同 1
    回复 1
    • 通
      09-09
      感谢关注,感谢
      09-09
      回复
  • 烬
    09-09

    体验版可以吗

    09-09
    赞同
    回复 5
    • 通
      09-09
      体验版也不行,我这个截图就是体验版截图的,线上的也是这个错误,感谢
      09-09
      回复
    • 通
      09-09回复
      封装的是可以的吧,开发中都ok,线上就不行了,难道这个封装的方法不支持吗?
      09-09
      回复
    • 烬
      09-09回复
      能弄个复现的示例代码吗,多余的代码不要
      09-09
      回复
    • 通
      09-09回复
      上面的代码是封装请求文件里的全部代码,在logs登录页面引入是这样【import fetch from '../../utils/fetch.js';】使用时是这样:【fetch(api.getkey, data, 'post', h, '5000').then((res) => { console.log('请求结果', res) }).catch((err) => { console.log('请求错误', res) })】
      09-09
      回复
    • 通
      09-09回复
      开发工具中调试都正常,真机调试也可以,上线了就不行了
      09-09
      回复
  • 通
    09-09

    已找到问题,粗心大意,删除剩6个页面(5个tabBar和一个登录页面)然后上传体验版发现依然报错,接着改fetch名称,6个页面和封装的方法“fetch”都重新命名依然同样错误,然后编辑器全局搜索fetch发现封装接口那里导出了一个没声明的fetch,解决,感谢各位大佬,是小程序让大家走到一起,谢谢小时光

    09-09
    赞同
    回复 2
    • 小时光
      小时光
      09-10
      您好,能贴一下,现在export 以及import的代码片段吗,学习下,谢谢。
      09-10
      回复
    • 通
      1天前回复小时光
      https://www.cytqq.com/promise-wrapper-request-wx-request/
      1天前
      1
      回复
问题标签