vue打包部署到服务器,动态获取(修改)对应服务器的请求ip

这篇具有很好参考价值的文章主要介绍了vue打包部署到服务器,动态获取(修改)对应服务器的请求ip。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:
vue打包后的文件要部署到不同的服务器上,ip不同,每次部署都要修改对应服务器的ip后打包上线,所以会出现频繁打包的情况
问题:vue项目打包上线不同服务器,需要打包一次能够动态的修改ip地址
思路1:
1.由于vue项目里面public文件在打包时不会被影响,所以可以在public文件夹下加入一个js文件,用来存储ip接口

2.在js文件里:window.VITE_BASE_URL = '对应服务器请求的ip'

public>webconfig.js

// window.VITE_BASE_URL = '地址ip1'
// window.VITE_BASE_URL = '地址ip2'
window.VITE_BASE_URL = '地址ip3'

// 打包后手动修改这块对应IP即可


3.这个ip可以存储到window对象里,在入口文件index.html里引入public里面的js文件(这里要注意引入路径,打包前和打包后index.html和public文件夹的层级关系)

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    ...
    <script src="./webconfig.js"></script>
    ...
  </head>
  <body>
    <div id="app">
      ...
    </div>
  </body>
</html>


4.修改所有用到基地址的请求,一般在axios基础配置文件里,把从vue引入的ip换成window.VITE_BASE_URL

const config: {
  base_url: string
  result_code: number | string
  default_headers: AxiosHeaders
  request_timeout: number
} = {
  // 拼接window.VITE_BASE_URL
  base_url: window.VITE_BASE_URL + import.meta.env.VITE_API_URL,
  result_code: 200,
  request_timeout: 30000,
  default_headers: 'application/json'
}

export { config }


5.打包时只要修改public文件里的window.VITE_BASE_URL的内容对应到服务器就可以了
思路2:
1.请求接口的基本ip和浏览该网页输入的IP地址相同(端口可能不同)
2.在输入网址后就获取到网址栏的IP,还是在public文件夹里面添加一个js文件,index.html引入该文件
webconfig.js文件内容


var baseUrl = location.protocol + '//' + location.host
baseUrl = baseUrl.slice(0, baseUrl.length - 5)
console.log('获取的网址ip===>', baseUrl)
window.VITE_BASE_URL = baseUrl + '端口'


3.同思路1-第四步
4.这样打包后就不用在去修改js文件,直接部署服务器就行

衍生问题:
我的vue项目中出现以下情况
按照上述的步骤实现动态获取后,当token过期后,会触发一个重新登录的操作,当用户点击重新登录后,跳转登录页面,这时window.VITE_BASE_URL就获取不到了(判断时路径重定向后,清除了写入window的对象),会导致请求接口地址错误
解决思路:
思路1.重新刷新让index.html文件执行一次,加载public里面的js文件重新在window对象里存入IP(当跳转到登录页后,使用延迟器强制刷新页面一次)

步骤:

(1)在路由加载前存入本地一个标识

// token过期检测为请求接口的时候
// 执行登出操作
// 此刻时机写入
// 干掉token后再走一次路由让它过router.beforeEach的校验
window.location.href = window.location.href  // 触发路由校验
localStorage.setItem('LOGIN_TIP', '1')  // 本地存入刷新标识

(2)根据标识刷新页面

// 路由加载前
router.beforeEach(async (to, from, next) => {
    if(token){
        ...
    }else{
        next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 
        // token过期跳转登录页后
        if (localStorage.getItem('LOGIN_TIP')) { // 找到刷新标识
            setTimeout(() => {
              window.location.reload(true) // 强制刷新页面
              localStorage.removeItem('LOGIN_TIP') // 清除标识,不然会一直重复刷新
            }, 1000) // 延迟不能为0,否则达不到效果
        }
    }
}

3. 刷新会再次执行index.html文件,从而执行webconfig.js,写入window.VITE_BASE_URL

END文章来源地址https://www.toymoban.com/news/detail-753852.html

到了这里,关于vue打包部署到服务器,动态获取(修改)对应服务器的请求ip的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vite打包Vue3项目,利用宝塔部署到服务器

    按照如图的配置,将vite.config.js的 base 改为  /dist/ 然后npm run build 就会得到左边的这个dist文件夹,这就是打包好的文件 创建项目以及项目配置 我在服务器安装的php是5.6版本的,其他版本可以自己试一下 解决刷新404问题 上传成功之后,文件目录结构是这样的 (顺序不一定要

    2024年04月13日
    浏览(83)
  • Vue项目上线打包好的文件如何在服务器上部署?

    1.打开router下的js文件,调成hash模式: mode:\\\'hash\\\'   2.终端输入: npm run build 3.此时项目中会多出一个dist的文件,这个文件就是我们打包出来的项目   (1)建立一个新的文件夹 (2)终端输入命令: npm init (3)输入: xxx_server (4)然后一路按回车到文件夹——框架完成,如下图

    2024年02月11日
    浏览(56)
  • Vue.js:Vue-Router动态路由从服务器接口获取路由数据

    文档 https://v3.router.vuejs.org/zh/installation.html 版本号 有几种方式实现动态路由: 前端配置 完整路由 ,通过接口返回的数据判断是否可显示,是否可访问 前端配置 部分路由 ,由后端接口返回的数据生成新路由 抛开路由的思维,是否能直接通过 url查询参数 或者是 动态路径参数

    2024年02月08日
    浏览(55)
  • 手把手教你如何把vue项目打包后部署到服务器(小白教程)

    一.需要用到的工具 vscode 下载链接:Visual Studio Code - Code Editing. Redefined FinalShell 下载链接:FinalShell官网 二.打包步骤 1.vscode打开你的vue项目-- 点终端 -- 输入npm run build 按回车进行打包;  2.打包成功 , 生成了dist文件夹, 打包好的文件会默认存放在里面;   三. 用FinalShell连接服

    2024年02月16日
    浏览(57)
  • 关于前端vue打包项目以及静态网站部署项目到阿里云ECS云服务器初学简单教程

    准备工作: 1.首先进入https://ecs.console.aliyun.com/ 领取或者购买一台简单的ECS云服务器。 进入网站注册登录后拉到页面最下面或者顶部搜索免费云服务器领取立即试用 ,当然富哥花钱买一台服务器也行。   创建完了以后可以进入云服务ECS工作台,然后就是以下界面   点击右边

    2024年02月04日
    浏览(72)
  • SpringBoot + Vue2项目打包部署到服务器后,使用Nginx配置SSL证书,配置访问HTTP协议转HTTPS协议

    配置nginx.conf文件,这个文件一般在/etc/nginx/...中,由于每个人的体质不一样,也有可能在别的路径里,自己找找... 证书存放位置,可自定义存放位置 两个文件 后端配置 把.pfx拷贝到resource下,然后配置一下yml

    2024年02月02日
    浏览(74)
  • 打包前后端项目并部署至服务器

    打包命令: npm run build 执行完命令后,会生成一个名为 dist 的文件夹,这个就是打包好的前端项目。 2.1、执行 maven 的 clean ,删除项目编译创建的 target 文件夹 2.2、执行 package,将项目打包至 target 文件夹下 3.1、连接服务器 3.2、在根目录创建文件夹,并上传打包好的前后端项

    2024年01月23日
    浏览(64)
  • 前端如何将项目打包部署到服务器

      本篇文章从前端项目打包开始,逐步完成项目部署到服务器的操作,这次咱们采取的部署方案是通过vscode中Remote-SSH和SFTP两个插件实现项目部署到服务器,并在服务器上通过nginx代理将请求转发到对应的端口。   先将自己开发完成的本地项目进行打包,打包之后会产生一个

    2024年03月14日
    浏览(70)
  • uniapp打包h5部署到服务器

    在学习uniapp,部署前后端分离项目。将h5的dist文件打包好后一直在考虑如何通过nginx反向代理到后端接口,整了半天也没整成。最后才发现,uniapp打包的h5页面包好像不需要反向代理到后端接口,只需要通过nginx将dist下的h5包代理了,直接访问后端接口即可。如果不知道如何打

    2024年02月01日
    浏览(38)
  • Linux服务器Jenkins部署打包Android

    介绍 Jenkins 自动打包 Android 应用,后面介绍打包Flutter应用,然后介绍打包Android原生+Flutter混合应用 准备工作 1.jenkins服务器地址 账户密码 2.项目git地址 访问账号密码 3.ssh 链接服务器账户密码 安装Android环境 Android SDK下载 国内老版本下载地址 官网下载地址 下载到本地使用使

    2024年02月10日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包