场景:
`在 Apipost 8.1.1 版本上定义全局变量
问题描述
1.在 Apipost 7.2.6 版本上正常运行的脚本,同步到 Apipost 8.1.1 版本上执行报错。提示变量未定义:
以下是报错的变量。
apt.variables.set("token", response.json.access_token);
console.log(response.json.access_token);
console.log(token);
2.使用 Apipost 8.1.1 版本提供的方法,使用环境变量赋值。代码如下:
apt.environment.set("variable_key", response.json.access_token);
console.log("response.json.access_token", response.json.access_token);
console.log("token", token);
3.使用 Apipost 8.1.1 版本提供的方法,使用全局变量赋值。代码如下:
apt.globals.set("variable_key", response.json.access_token);
console.log("response.json.access_token", response.json.access_token);
console.log("token", token);
打印的执行日志中,变量 token 未被定义。
原因分析:
1.基于报错原因中的 ReferenceError: token is not defined,尝试先将变量名声明一下 token。如下
const token = 0;
apt.variables.set("token", response.json.access_token);
console.log("response.json.access_token", response.json.access_token);
console.log("token", token);
打印的执行日志中,变量 token 的值为 0. 到这里我们意识到,apt.variables.set 这个方法并没有把数据结构中 response.json.access_token 的值赋给变量 token。
2.apt.environment.set 跟 apt.globals.set 方法同样操作,执行日志结果一致。说明这两个方法同样没有把数据结构中 response.json.access_token 的值赋给变量 token。
3.尝试在声明变量的同时,直接赋值。代码如下:
const token = response.json.access_token;
console.log("response.json.access_token", response.json.access_token);
console.log("token", token);
打印的执行日志中,变量 token 的值 为 response.json.access_token 的值。
这一步只解决了报错问题,但是声明的变量还是不能在脚本中被引用。去官方问答社区查看大家的问题,结果8.1.1 版本的 Apipost 还是没解决变量引用的BUG。
解决方案:
1.尝试在声明变量的同时,直接赋值。这一步只解决了报错问题,但是声明的变量还是不能在脚本中被引用。代码如下:
const token = response.json.access_token;
console.log("response.json.access_token", response.json.access_token);
console.log("token", token);
- 尝试在声明变量后,再使用 apt.globals.set 方法去将 token 设置为全局变量。
好消息:全局变量设置成功
坏消息:不知道为什么设置成功
但是,总归是可以继续往下调试测试脚本了,就不再这过多纠结。
const token = response.json.access_token;
apt.globals.set("token", token);
console.log("response.json.access_token", response.json.access_token);
console.log("token", token);
标签:8.1,console,log,Apipost,json,access,token,全局变量,response
From: https://blog.csdn.net/weixin_45587406/article/details/141857088