如下
追梦随想
- 发布:2022-12-04 10:40
- 更新:2022-12-05 12:26
- 阅读:313
产品分类: uniCloud/App
操作步骤:
预期结果:
正常执行自定义clientInfo 配置
正常执行自定义clientInfo 配置
实际结果:
没有执行自定义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自行生产的,自己配置的根本不执行
追梦随想 (作者)
问题已定位,在当前运行的云对象内是可以打印出来的,但是如果在云对象内调用另一个云对象,在被调用的云对象内打印结果就是错的,是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