首页 > 其他分享 >Vite+Vue3项目如何获取环境配置,并解决前端跨域问题

Vite+Vue3项目如何获取环境配置,并解决前端跨域问题

时间:2024-02-11 22:00:44浏览次数:36  
标签:vue 跨域 -- Vite URL vite Vue3 VITE mode

步骤

  • 根目录新建.env.development和.env.production文件

  • package.json配置启动参数

    vite命令启动项目时,指定mode参数,加载vite.config.ts文件。

"dev": "vite --host 0.0.0.0 --port 8093 --mode development",
"prod": "vite --port 8093 --host 0.0.0.0 --mode production",
"build:dev": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false && vite build --mode development",
"build:prod": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false && vite build --mode production",
  • 配置代理

在vite.config.ts中配置代理

server: {
      cors: true,
      proxy: {
        '/api': {
          target: VITE_SERVER_URL,
          changeOrigin: true,
          ws: true,
          rewrite: (path) => path.replace(/^\/api/, '') // 重写请求
        }
      }
    }
  • 配置vite-plugin-html

通过vite-plugin-html组件,可以将配置文件中的数据,绑定到index.html中,可以实现不同环境的页面title和logo。

createHtmlPlugin({
        inject: {
          data: {
            logo: VITE_LOGO,
            title: VITE_TITLE,
          },
        },
      }),

代码

准备

安装组件

"axios": "^1.6.7",
"vite-plugin-html": "^3.2.2",
"vue": "^3.4.15",

编码

.env.developent

# 开发环境配置
NODE_ENV='development'

# 本地服务端口
VITE_PORT=8093

# 后台服务地址
VITE_SERVER_URL='http://localhost:8083'

# 页面标题
VITE_TITLE='工具箱-dev'

# ICO
VITE_LOGO='/favicon-dev.ico'

# 超时时间(ms)
VITE_AXIOS_TIMEOUT=10000

.env.production

# 开发环境配置
NODE_ENV='production'

# 本地服务端口
VITE_PORT=12003

# 后台服务地址
VITE_SERVER_URL='http://192.168.31.3:11003/'

# 页面标题
VITE_TITLE='工具箱'

# ICO
VITE_LOGO='/favicon.ico'

# 超时时间(ms)
VITE_AXIOS_TIMEOUT=10000

vite.config.ts

import { fileURLToPath, URL } from 'node:url'

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import {createHtmlPlugin} from 'vite-plugin-html';

// https://vitejs.dev/config/
export default (({mode}: {mode: string}) => {
  const VITE_ENV_CONFIG = loadEnv(mode, process.cwd());
  const VITE_SERVER_URL = VITE_ENV_CONFIG.VITE_SERVER_URL;
  const VITE_TITLE = VITE_ENV_CONFIG.VITE_TITLE;
  const VITE_LOGO = VITE_ENV_CONFIG.VITE_LOGO;

  return defineConfig({
    plugins: [vue(), vueJsx(),
      createHtmlPlugin({
        inject: {
          data: {
            logo: VITE_LOGO,
            title: VITE_TITLE,
          },
        },
      }),
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
// 配置代理,解决跨域问题
    server: {
      cors: true,
      proxy: {
        '/api': {
          target: VITE_SERVER_URL,
          changeOrigin: true,
          ws: true,
          rewrite: (path) => path.replace(/^\/api/, '') // 重写请求
        }
      }
    }
  },)
})

index.html

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="<%= logo %>">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><%= title %></title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

标签:vue,跨域,--,Vite,URL,vite,Vue3,VITE,mode
From: https://www.cnblogs.com/haleyeung/p/18013562

相关文章

  • vue3 let,var,const区别
    在Vue3中,let、var和const都是用于声明变量的关键字区别:   var:在JavaScript中,var是声明变量的最常用的关键字。var声明的变量的作用域是函数级的,如果在函数内部声明的变量,其作用域将限制在函数体内部。如果在函数外部声明的变量,则其作用域将是全局的。   let:let也用于声明......
  • vue3整合echarts
    Vue3是一个流行的前端框架,而ECharts是一个功能强大的图表库。将ECharts整合到Vue3项目中可以方便地展示各种图表。以下是将ECharts整合到Vue3项目中的基本步骤:安装ECharts:使用npm或yarn安装ECharts:bash复制代码npminstallecharts--save或......
  • 为什么vue3内不使用this
    在Vue3中,this 的使用受到了限制,主要是因为在Vue3中引入了CompositionAPI,它提供了一种更灵活、更可组合的方式来组织和管理组件的逻辑。在CompositionAPI中,不再使用传统的选项(如 data、methods、computed 等)来定义组件的逻辑,而是使用 setup 函数来组织逻辑。在 s......
  • python3.9+django4.1+vue3 ,后端项目运行时,报错了,WSGI application 'XXX.wsgi.applicat
    python3.9+django4.1+vue3,后端项目运行时,报错了; 报错信息,如下:django.core.exceptions.ImproperlyConfigured:WSGIapplication'StudentMgrBE.wsgi.application'couldnotbeloaded;Errorimportingmodule.     ------------------------------百度......
  • Vue3 - 移动端配置Rem布局
    1、项目搭建2、安装插件npminstallamfe-flexible--savenpminstallpostcss-pxtorem--save-dev3、引入插件import'amfe-flexible'//main.ts4、vite.config.ts配置import{defineConfig}from'vite'importpostCssPxToRemfrom'postcss-pxtore......
  • Java微服务SpringCloud+Uniapp+Vue3+Element Plus开源BizSpring商城
    产品介绍BizSpring电商平台概述BizSpring电商平台,是基于最新SpringCloud微服务架构开发的多语言电商平台,使用领先的Vue3.0+ElementPlus+uniapp技术开发的移动全端业务、实现了多平台同步构建及建设的解决方案。应用发布基于Uni-app,实现跨多个平台(H5、公众号、头条、抖音......
  • vue3 动态加载el-icon图标
    https://element-plus.org/zh-CN/component/icon.html静态示例<el-icon><Menu/></el-icon>动态示例Menu为图标名称,可替换,注意是字符串<el-icon><component:is="Menu"/></el-icon>在菜单列表中使用,渲染出每个菜单不同的图标<el-menu:default-act......
  • 前后端跨域竟然不需要加注解!
    众所周知前后端跨域一直是让人头疼的问题。那什么是跨域呢?出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策......
  • 谷歌新版本跨域错误深度剖析与解决:request client is not a secure context and the
    原文地址:https://blog.csdn.net/Flywithdawn/article/details/128253604 快速解决: ======================================================最近在测试http服务时,谷歌浏览器报了以下错误“Therequestclientisnotasecurecontextandtheresourceisinmore-privat......
  • NPM -  WARN  GET https://registry.npm.taobao.org/vite error (CERT_HAS_EXPIRED)
    切换了镜像源但依旧还是之前的,需要移除项目中的node_modules,重新下载依赖。可以通过rimrafnode_modules移除:重新下载依赖一切正常:......