vue 根据不同环境变量跳转相应地址?

环境变量配置:

NODE_ENV = production
VUE_APP_BASE_URL = https://xxx.com.cn

401跳转的时候调用process.env

http.interceptors.response.use(
  (response) => {
    let noverify = response.config.headers.noverify;
    if (noverify) {
      const { data } = response;
      return data;
    } else {
      const { data: { data, status = true, error = {} } = {} } = response;
      if (!status) {
        const msg = error.msg || '服务端执行出错!';
        if (error.code === 'REL001') {
          return Promise.reject(msg);
        } else {
          Message.error(msg);
        }
        return Promise.reject(msg);
      }
      return data || {};
    }
  },
  (error) => {
    if (error.response) {
      // The request was made and the server responded with a status code
      // that falls out of the range of 2xx
      const { status: responseStatus } = error.response;
      if (responseStatus === 401) {
        window.location = `${process.env.VUE_APP_BASE_URL}/login.html?return_url=${window.location.href}`;
      } else if (responseStatus === 403) {
        // 没有权限
        Message.error('没有权限操作!');
      } else {
        const msg = error.response?.data?.error?.msg || '服务端接口异常!';
        Message.error(msg);
        return Promise.reject(new Error(msg));
      }
    } else {
      // Something happened in setting up the request that triggered an Error
      console.error(error);
      return Promise.reject(new Error('请求出错!'));
    }
    return Promise.reject(error);
  }
);

点击退出的时候也调用了一次

window.location = `${process.env.VUE_APP_BASE_URL}/login.html?return_url=${window.location.href}`;

现在本地测试没问题,到线上环境的时候,输入登陆的时候显示地址没问题,但是点击退出登录后地址就变成http地址就不是process.env,如下图,process.env地址也变成了后面的http地址。
image.png

有遇到过的小伙伴吗?

阅读 1.9k
1 个回答

看起来不像是环境变量的关系嗷,环境变量在编译后会被替换成字符串的,也就是说你的

window.location = `${process.env.VUE_APP_BASE_URL}/login.html?return_url=${window.location.href}

这行代码编译后其实就是

window.location = `${'https://xxx.com.cn'}/login.html?return_url=${window.location.href}

所以如果说

点击退出登录后地址就变成http地址就不是process.env,如下图,process.env地址也变成了后面的http地址。

其实需要检查你的退出登录的业务代码,看看是具体怎么操作的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题