vue3 vite模式配置测试,开发、生产环境以及代理配置

news2024/11/18 14:48:24

1、首先在根目录下创建三个文本文件:.env.development,.env.production,.env.test

在这里插入图片描述

.env.development中的内容为:

// 开发环境 .env.development
NODE_ENV = 'development'
VITE_APP_MODE  = 'development'
VITE_OUTPUTDIR  = dist_dev // 打出包的名称
VITE_APP_BASE_URL  = http://www.development.com/

.env.production中的内容为:

// 生产环境 .env.production
NODE_ENV = 'production'
VITE_APP_MODE  = 'production'
VITE_OUTPUTDIR  = dist_pro // 打出包的名称
VITE_APP_BASE_URL  = http://www.production.com/

.env.test中的内容为:

// 测试环境 .env.test
NODE_ENV = 'test'
VITE_APP_MODE = 'test'
VITE_OUTPUTDIR = dist_test
VITE_APP_BASE_URL = http://www.test.com/

2、package.json中的script中的内容配置如下:

  "scripts": {
    "dev": "vite",
    "prod": "vite --mode production",
    "test": "vite --mode test",
    "build": "vite build",
    "preview": "vite preview",
    "build:dev": "vite build --mode development",
    "build:prod": "vite build --mode production",
    "build:test": "vite build --mode test"
  },

在这里插入图片描述

3、使用:在main.js中打印查看结果:

console.log('import.meta.env.BASE_URL',import.meta.env.BASE_URL)  // 输出的为:/
console.log('import.meta.env.NODE_ENV',import.meta.env.NODE_ENV)  // 输出的为:/
console.log('import.meta.env.VITE_APP_MODE',import.meta.env.VITE_APP_MODE)  // 输出的为:/
console.log('import.meta.env.VITE_OUTPUTDIR',import.meta.env.VITE_OUTPUTDIR)  // 输出的为:/
console.log('import.meta.env.VITE_APP_BASE_URL',import.meta.env.VITE_APP_BASE_URL)  // 输出的为:/

在这里插入图片描述

4、验证:分别运行 npm run dev, npm run test、 npm run prod

在这里插入图片描述

  • npm run dev:输出结果如下:
    在这里插入图片描述
  • npm run test:输出结果如下:
    在这里插入图片描述
  • npm run prod:输出结果如下:
    在这里插入图片描述

5、可以看出以上结果会根据运行命令的不同而使用不同的配置这样就可以在生产和测试接口路径不一样时不用根据不同的命令来访问不同的接口地址,访问配置如下:

5.1、首先需要下载axios

5.2、创建如下文件及文件夹

在这里插入图片描述

5.3、http.js中的内容如下:

// axios基础的封装
import axios from 'axios'
const httpInstance = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_URL,
  timeout: 5000
})

// axios请求拦截器
httpInstance.interceptors.request.use(config => {
  // 1. 从pinia获取token数据
  return config
}, e => Promise.reject(e))

// axios响应式拦截器
httpInstance.interceptors.response.use(res => res.data, e => {
  // 统一错误提示
  return Promise.reject(e)
})

export default httpInstance

5.4、在app.vue中发送请求并

在这里插入图片描述

import request from '@/utils/http'
request({
  url: `/api/member/order`
})

6、分别运行并测试

6.1 npm run test

在这里插入图片描述

6.2 npm run prod

strict-origin-when-cross-origin 出现这个需要找后端解决跨域
在这里插入图片描述

6.3 npm run dev

在这里插入图片描述

7 另一种通过代理方式:

首先需要将这三个文件中的这个东西注释掉
在这里插入图片描述
然后修改 vite.config.js 其中的内容如下:

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

import {defineConfig, loadEnv} from 'vite'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {

  const env = loadEnv(mode, './');  // 注意:loadEnv来自vite
  
  // console.log("env.VITE_APP_BASE_URL", env.VITE_APP_BASE_URL);
  return{
    plugins: [
      vue(),
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
    // 主要修改在这
    server: {  
	    proxy: {
	      "/api": {
	        target: env.VITE_APP_BASE_URL,
	        // target: "",
	        //其他配置...
	        rewrite: (path) => path.replace(/^\/api/, ''),
	      },
	    },
  	}
  }
})

在app.vue中发送请求

在这里插入图片描述

添加完代理后的三种方式的执行结果都是一样的

npm run dev
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java的宠物之家小程序 宠物服务小程序【源码+调试】

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻 💖🔥作者主页:计算机毕设木哥🔥 💖 文章目录 一、宠物之家小程…

FPGA第 11 篇,Verilog 系统函数( Verilog 中的系统函数)

前言 Verilog 作为一种强大的硬件描述语言,不仅提供了用于设计和仿真数字电路的基础语法,还包含了丰富的系统函数,帮助我们高效地完成复杂的硬件操作。系统函数是 Verilog 语言中预定义的特殊函数,通常以 $ 开头,它们…

【深度学习】(7)--神经网络之保存最优模型

文章目录 保存最优模型一、两种保存方法1. 保存模型参数2. 保存完整模型 二、迭代模型 总结 保存最优模型 我们在迭代模型训练时,随着次数初始的增多,模型的准确率会逐渐的上升,但是同时也随着迭代次数越来越多,由于模型会开始学…

今日不错的讲企业架构的好图

今日不错的讲企业架构的好图,来源B站不错的UP主:企业架构知识体系-业务技术管理的知识框架_哔哩哔哩_bilibili

grafana频繁DataSourceError问题

背景 随着 Grafana 数据量的不断增加,逐渐暴露出以下问题: Grafana 页面加载缓慢;Grafana 告警频繁出现 DatasourceError 错误。 对于第一个问题,大家可以参考这篇文章:Grafana 加载缓慢的解决方案。 不过&#xf…

【Unity踩坑】Textmesh Pro是否需要加入Version Control?

问题:如果Unity 项目中用到了Textmesh pro,相关的文件是否也需要签入呢? 回答: 在使用 Unity 的 Version Control(例如 Plastic SCM 或 Git)时,如果你的项目中使用了 TextMesh Pro&#xff0c…

条件字段有索引,为什么查询也这么慢?

如果我们想在某一本书中找到特定的主题,一般最快的方法是先看索引,找到对应的主题在哪个页码。 而对于 MySQL 而言,如果需要查找某一行的值,可以先通过索引找到对应的值,然后根据索引匹配的记录找到需要查询的数据行。…

家政服务预约系统小程序的设计

管理员账户功能包括:系统首页,个人中心,客户管理,员工管理,家政服务管理,服务预约管理,员工风采管理,客户需求管理,接单信息管理 微信端账号功能包括:系统首…

Java | Leetcode Java题解之第430题扁平化多级双向链表

题目: 题解: class Solution {public Node flatten(Node head) {dfs(head);return head;}public Node dfs(Node node) {Node cur node;// 记录链表的最后一个节点Node last null;while (cur ! null) {Node next cur.next;// 如果有子节点&#xff0…

后端(实例)08

设计一个前端在数据库调取数据的表格&#xff0c;并完成基础点击增删改查的功能&#xff1a; 1.首先写一个前端样式&#xff08;空壳&#xff09; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Insert title here&l…

VUE条件树查询

看如下图所示的功能&#xff0c;是不是可高级了&#xff1f;什么&#xff0c;你没看懂&#xff1f;拜托双击放大看&#xff01; 是的&#xff0c;我最近消失了一段时间就是在研究这个玩意的实现&#xff0c;通过不懈努力与钻研并参考其他人员实现并加以改造&#xff0c;很好&am…

人工智能时代的网络空间战略稳定及其挑战

文章目录 前言一、人工智能时代的网络空间战略稳定及其挑战(一)国内政治与官僚主义二、大国竞争与溯源政治三、国际法规与治理限制总结前言 人工智能的武器化应用在短期内将同时强化网络空间中进攻方和防御方的能力,但从长期看将有利于防御方。这种态势将令传统威慑逻辑重新…

[数据库实验三]安全性

目录 一、实验目的与要求&#xff1a; 二、实验内容&#xff1a; 三、实验小结 一、实验目的与要求&#xff1a; 1、设计用户子模式 2、根据实际需要创建用户角色及用户&#xff0c;并授权 3、针对不同级别的用户定义不同的视图&#xff0c;以保证系统的安全性 二、实验内…

Springboot jPA+thymeleaf实现增删改查

项目结构 pom文件 配置相关依赖&#xff1a; 2.thymeleaf有点类似于jstlel th:href"{url}表示这是一个链接 th:each"user : ${users}"相当于foreach&#xff0c;对user进行循环遍历 th:if进行if条件判断 {变量} 与 ${变量}的区别: 4.配置好application.ym…

【SemeDrive】【X9H】如何修改 SAFETY_FAULT 输出 PWM 频率

前言&#xff1a; SAFETY_FAULT 也是 SEM_FAULT&#xff0c;在原理图上会有不同的标注&#xff0c;但意义一样。 默认的 SAFETY_FAULT 正常时输出 PWM 频率为 100 MHz&#xff0c;过高的频率有时会导致无法通过 EMI 测试&#xff0c;需要降低频率。以下描述如何将正常时的 S…

ssh 命令详解

一、命令简介 ​ssh ​命令用于安全登录远程主机&#xff0c;以便在远程机上执行命令或传输数据。 ‍ 例如登录远程主机 169.10.222.23 ​上的 soulio ​用户&#xff1a; ssh soulio169.10.222.23更多示例参考第三章。 ‍ 了解背景知识&#xff1a;ssh 加密 1. 加密类型…

C++之Person类中调用Date类

main.cpp #include <iostream> #include "Person.h" using namespace std;int main() {Person myPerson;// Person myPerson("S.M.Wang", 070145, "莲花路200号");cout << "请输入姓名:" ;string name;cin >> name…

【文档智能 RAG】浅看开源的同质化的文档解析框架-Docling

前言 RAG的兴起&#xff0c;越来越多的人开始关注文档结构化解析的效果&#xff0c;这个赛道变得非常的同质化。 关于文档智能解析过程中的每个技术环节的技术点&#xff0c;前期文章详细介绍了很多内容&#xff1a; 下面我们简单的看看Docling这个PDF文档解析框架里面都有什…

尚品汇-自动化部署-Jenkins的安装与环境配置(五十六)

目录&#xff1a; 自动化持续集成 &#xff08;1&#xff09;环境准备 &#xff08;2&#xff09;初始化 Jenkins 插件和管理员用户 &#xff08;3&#xff09;工作流程 &#xff08;4&#xff09;配置 Jenkins 构建工具 自动化持续集成 互联网软件的开发和发布&#xf…

AI:颠覆式创新 vs. 持续性创新

随着有关生成式人工智能 (GenAI) 的新闻不断出现在社交媒体上&#xff0c;包括 ChatGPT 4o 如何帮助你与朋友玩石头、剪刀、布&#xff0c;关于 GenAI 的“颠覆性”影响的惊人声明并不难找到。 事实证明&#xff0c;将 GenAI 本身称为“颠覆性”并没有多大意义。 它能成为颠覆…