追梦随想
追梦随想
  • 发布:2022-12-04 10:40
  • 更新:2022-12-05 12:26
  • 阅读:313

【报Bug】本地运行云对象时配置运行测试参数中的模拟客户端信息根本不执行

分类:uniCloud

产品分类: uniCloud/App

操作步骤:

如下

预期结果:

正常执行自定义clientInfo 配置

实际结果:

没有执行自定义clientInfo

bug描述:

本地运行云对象时,需要配置运行测试参数,有时候需要模拟客户端信息
官方文档是这样的

const clientInfo = { // 模拟clientInfo  
  uniPlatform: 'web',  
  source: 'client', // 调用来源,不传时默认为 client  
  clientIP: '127.0.0.1', // 客户端ip,不传时默认为 127.0.0.1  
  userAgent: 'xx MicroMessenger/xxx', // 客户端ua,不传时默认为 HBuilderX  
  uniIdToken: 'xxx'  
}  
login('name-demo', 'password-demo') // 调用login方法传入参数'name-demo'和'password-demo'

但在实际运行的时候配置的运行方法是正常的,clientInfo根本无效

// 本文件中的内容将在云对象【运行】时解析为运行参数  
// 配置教程参考:https://uniapp.dcloud.net.cn/uniCloud/rundebug.html#run-obj-param  
const clientInfo = {  
  uniPlatform: 'web',  
  source: 'client', // 调用来源,不传时默认为 client  
  clientIP: '127.0.0.16', // 客户端ip,不传时默认为 127.0.0.1  
  appId: '__UNI__123456'  
}  
  
register({  
	mobile: '16666666666',  
	password: '123456',  
	sms_code: '666666'  
});

控制台报错信息

10:32:16.660 [本地运行]{"clientIP":"127.0.0.1","userAgent":"HBuilderX","source":"function"} uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/index.obj.js:85:9  
10:32:16.666 [本地运行]- 如果使用HBuilderX运行本地云函数/云对象功能时出现此提示,请改为使用客户端调用本地云函数方式调试,或更新HBuilderX到3.4.12及以上版本。 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/common/validator.js:421:14  
10:32:16.666 [本地运行]- 如果是缺少clientInfo.appId,请检查项目manifest.json内是否配置了DCloud AppId  
10:32:16.972 [本地运行]Error: "clientInfo.uniPlatform" is required.

通过打印发现clientInfo 里面的数据是HX自行生产的,自己配置的根本不执行

2022-12-04 10:40 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

什么版本的HBuilderX?我这测试是正常的。云对象目录下面的文件的截图发一下。

  • 追梦随想 (作者)

    问题已定位,在当前运行的云对象内是可以打印出来的,但是如果在云对象内调用另一个云对象,在被调用的云对象内打印结果就是错的,是HX自行生产的


    2022-12-05 12:28

  • 追梦随想 (作者)

    正常情况不应该上下文是一致的吗?还是说我理解错了,求解


    2022-12-05 12:29

  • DCloud_uniCloud_WYQ

    回复 追梦随想: 云对象调用云对象的时候不会使用被调用云对象里面配置的参数和clientInfo


    2022-12-05 12:49

  • 追梦随想 (作者)

    回复 DCloud_uniCloud_WYQ: 不是这样的,A调用B,A配置有参数,在B内打印clientInfo 结果不应该是A配置的参数吗?


    2022-12-05 13:09

  • DCloud_uniCloud_WYQ

    回复 追梦随想: 不应该,对于B来说A是他的客户端


    2022-12-05 14:10

  • 追梦随想 (作者)

    回复 DCloud_uniCloud_WYQ: 既然A是客户端,那请求了B,就应该把客户端参数传递给B,这样理解没错吧,现在的问题是参数无法正常传递


    2022-12-05 14:12

  • DCloud_uniCloud_WYQ

    回复 追梦随想: A的clientInfo是A的客户端的,而不是属于A这个云函数实例的。以clientIP为例对于B来说clientIP是指A的实例的出口IP


    2022-12-05 14:25

  • 追梦随想 (作者)

    回复 DCloud_uniCloud_WYQ: 是这样理解的啊,问题是,A作为客户端请求B,那B要获取请求来源A的请求头信息,这时候怎么就无法获取了呢?按照你的意思,似乎A请求B的时候根本不会把A的请求头发送给B


    2022-12-05 14:48

  • DCloud_uniCloud_WYQ

    回复 追梦随想: 肯定是不会的,毕竟不是请求转发。如果B里面需要可以由A传过去。


    2022-12-05 15:10

  • 追梦随想 (作者)

    回复 DCloud_uniCloud_WYQ: 好吧,跟传统后端差别有点大,那既然如此B为何还要模拟出一个内置的参数呢?这岂不是多此一举


    2022-12-05 15:16

要回复问题请先登录注册