You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 11:14:29