收藏
回答

云函数里发起http请求,没有收到请求,返回也没有被调用

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 Bug 工具 wx2bf0ebe354aaac9c 2.8.0

在云函数里通过request发起http请求(无论get或post),云函数运行貌似没出错,但是response处理没有被调用。而对方,压根就没有收到http请求。

尝试了其它域名,也是没有response。

const request = require('request')


request.get('https://baidu.com', function (error, response, body) {

console.log('error:', error); // Print the error if one occurred

console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received

console.log('body:', body); // Print the HTML for the Google homepage.

});

wx2bf0ebe354aaac9c

2019-08-10 16:53:16

可复现,请盘查,谢谢。

最后一次编辑于  2019-08-10
回答关注问题邀请回答
收藏

3 个回答

  • 编程小石头
    编程小石头
    2019-09-23
    const cloud = require('wx-server-sdk')
    //引入request-promise用于做网络请求
    var rp = require('request-promise');
    cloud.init()
     
    // 云函数入口函数
    exports.main = async (event, context) => {
      let url = 'https://www.baidu.com';
      return await rp(url)
        .then(function (res) {
          return res
        })
        .catch(function (err) {
          return '失败'
        });
    }


    上面代码亲测可用,记得 npm install  request-promise


    2019-09-23
    赞同
    回复
  • 老张
    老张
    2019-08-10

    这种情况第一判断就是异步的问题,你request还没返回,云函数就运行结束了。

    2019-08-10
    赞同
    回复 4
    • naofy
      naofy
      2019-08-10
      嗯嗯,有道理,我试了两种模拟sleep的方法:一种是new Promise(resolve => setTimeout(resolve, ms)),结果不等timeout云函数退出;第二种方法,while烧,能达到sleep 1秒。不管哪种方法,request还没返回,http请求也没收到。
      2019-08-10
      回复
    • naofy
      naofy
      2019-08-10
      云函数的调用机制有点奇怪啊,有异步的时候会有问题吗
      2019-08-10
      回复
    • 老张
      老张
      2019-08-10回复naofy
      所以最好用async/await
      2019-08-10
      回复
    • naofy
      naofy
      2019-08-10
      果然是云函数里有异步函数会有问题,用了request-promise就好了,多谢提醒!
      2019-08-10
      回复
  • 痛快科技
    痛快科技
    2019-08-10

    从云控制台中看一下是否有报错,打印信息是什么

    2019-08-10
    赞同
    回复 3
    • naofy
      naofy
      2019-08-10
      没有报错,云函数返回正常,但是照说应该有response处理log,一点log都没有。
      2019-08-10
      回复
    • naofy
      naofy
      2019-08-10
      在request的前后都打印了log,都有,就是request的response处理log没有
      2019-08-10
      回复
    • naofy
      naofy
      2019-08-10
      果然是云函数里有异步函数会有问题,用了request-promise就好了,多谢回复!
      2019-08-10
      回复
登录 后发表内容
问题标签