Bruno预请求脚本中异步函数内无法保存环境变量的问题求助
Bruno预请求脚本中异步函数内无法保存环境变量的问题求助
我现在在Bruno里写预请求脚本,想先获取Bearer令牌并保存为环境变量,再执行主请求。我用Axios发POST请求拿令牌,代码能成功获取到令牌,控制台打印的内容都没问题,所有日志里的console.log都显示正确的数据。但问题来了——只有在根层级设置的rootToken能成功保存为环境变量,异步的axios .then 块里的setEnvVar调用完全不生效。
我试过在根层级手动保存令牌,是能正常工作的,有没有大佬知道这是咋回事?
[编辑补充] 这不是变量作用域的问题哈,setEnvVar是把变量保存到Bruno的环境变量里,就像Postman的环境变量那样,相当于把值写到配置里,不是内存变量的作用域问题。
下面是我的代码:
const axios = require('axios'); const tokenEndpoint = bru.getEnvVar('RootUrl') + "/api/v1/oauth/token"; const clientId = bru.getEnvVar('ClientId'); const clientSecret = bru.getEnvVar('Secret'); const grantType = 'client_credentials'; function saveToken(token) { bru.setEnvVar("functionToken", token); console.log("functionToken set to:", token); } bru.setEnvVar("rootToken", "token"); console.log("rootToken set to: token"); // Make a request to get the access token axios.post(tokenEndpoint, { client_id: clientId, client_secret: clientSecret, grant_type: grantType }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }) .then(response => { console.log(response); const accessToken = response.data.access_token; console.log("Access Token:", accessToken); bru.setEnvVar("AccessToken", accessToken); console.log("AccessToken set to:", accessToken); saveToken(accessToken); }) .catch(error => { console.error('Error fetching access token:', error); });
备注:内容来源于stack exchange,提问作者Gremash
相关产品推荐
相关产品推荐

