关于vue.config.js中配置前端代理

2023-11-20

写在前边

注意开发环境的本地代理或者测试环境的代理,在部署到正式上时,一定要换成线上的IP地址,不然,数据拿不到哦

代理配置

 esay mock新地址 模拟接口地址 , 就以第一个进行说明怎么配置和使用了, 只说代理配置部分,其它不再说明

 

新建项目(略过le... )

ip地址配置成自动切换的

首先在项目中 新建

vue.config.js    (cli配置文件)   

.env.development (配置开发和测试接口地址) 

 .env.production (配置生产环境接口地址)   

关于上边那个配置文件参考 vue-cli 文档,链接过去 的这一块内容

先放个项目目录

.env.production(将下边的内容放进去)

## 配置测试和本地开发时的 接口地址
VUE_APP_URL = "你的开发或测试接口地址"

.env.development(将下边的内容放进去)

## 配置 正式接口地址
VUE_APP_URL = "你的正式接口地址"

vue.config.js (代理配置参考文档 proxy 代理 )

以下边的接口来来测试(https://www.easy-mock.com/mock/5ce2a7854c85c12abefbae0b/api

将.env.development(将下边的内容放进去)改掉,换成上边的地址

## 配置测试和本地开发时的 接口地址
VUE_APP_URL = "https://www.easy-mock.com/mock/5ce2a7854c85c12abefbae0b/api"

vue.config.js中的 devServer  属性 下 进行 配置

const port = 8589; // dev port
// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = {
  devServer: {
    port,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    // 配置代理 (以接口 https://www.easy-mock.com/mock/5ce2a7854c85c12abefbae0b/api 说明)
    proxy: {
      "/api": {
        target: process.env.VUE_APP_URL,
        changeOrigin: true, // 是否改变域名
        ws: true
        // pathRewrite: {
        //   // 路径重写
        //   "/api": "" // 这个意思就是以api开头的,定向到哪里, 如果你的后边还有路径的话, 会自动拼接上
        // }
      }
    }
    // 下边这个, 如果你是本地自己mock 的话用after这个属性,线上环境一定要干掉
    // after: require("./mock/mock-server.js")
  }
};

启动测试

在main.js  中 打印 刚好拿到上边的 地址

import Vue from "vue";
import App from "./App.vue";

Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");


console.log(process.env.VUE_APP_URL);

打印结果

测试请求(我就在 main.js 中配置了)

import Vue from "vue";
import App from "./App.vue";
import axios from "axios";
Vue.config.productionTip = false;

// axios.get("")
axios.baseURL = process.env.VUE_APP_URL;

console.log(process.env.VUE_APP_URL);

axios.get("/api/new_article").then(res => {
  console.log(res);
});

new Vue({
  render: h => h(App)
}).$mount("#app");

看一下 network (网络), 接口已经被代理到本地

看一下上边的那个  注释的 那个 pathRewrite 属性的使用 

修改 .env.development 文件 

## 配置测试和本地开发时的 接口地址
VUE_APP_URL = "https://www.easy-mock.com/mock/"

const port = 8589; // dev port
// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = {
  devServer: {
    port,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    // 配置代理 (以接口 https://www.easy-mock.com/mock/5ce2a7854c85c12abefbae0b/api 说明)
    proxy: {
      "/api": {
        // 以 “/api” 开头的 代理到 下边的 target 属性 的值 中
        target: process.env.VUE_APP_URL,
        changeOrigin: true, // 是否改变域名
        ws: true,
        pathRewrite: {
          // 路径重写
          "/api": "5ce2a7854c85c12abefbae0b/api" // 这个意思就是以api开头的,定向到哪里, 如果你的后边还有路径的话, 会自动拼接上
        }
      }
    }
    // 下边这个, 如果你是本地自己mock 的话用after这个属性,线上环境一定要干掉
    // after: require("./mock/mock-server.js")
  }
};

这样配置还有一个好处, 就是 你只要 改变了 接口地址, 你的代理的 地址 ,回自动帮你改变, 就不再生产和测试环境来回的手动改了, 

记得改完配置文件,要重启项目,才生效

放个自己的配置文件

const path = require("path");

function resolve(dir) {
  return path.join(__dirname, dir);
}

// If your port is set to 80,
// use administrator privileges to execute the command line.
// For example, Mac: sudo npm run
const port = 9527; // dev port

// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = {
  /**
   * You will need to set publicPath if you plan to deploy your site under a sub path,
   * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
   * then publicPath should be set to "/bar/".
   * In most cases please use '/' !!!
   * Detail: https://cli.vuejs.org/config/#publicpath
   */
  publicPath: "/",
  outputDir: "dist",
  assetsDir: "static",
  lintOnSave: process.env.NODE_ENV === "development",
  productionSourceMap: false,
  devServer: {
    port,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    // 配置代理 (以接口 https://www.easy-mock.com/mock/5ce2a7854c85c12abefbae0b/api 说明)
    proxy: {
      "/api": {
        // 以 “/api” 开头的 代理到 下边的 target 属性 的值 中
        target: process.env.VUE_APP_URL,
        changeOrigin: true, // 是否改变域名
        ws: true,
        pathRewrite: {
          // 路径重写
          "/api": "5ce2a7854c85c12abefbae0b/api" // 这个意思就是以api开头的,定向到哪里, 如果你的后边还有路径的话, 会自动拼接上
        }
      }
    }
    // 下边这个, 如果你是本地自己mock 的话用after这个属性,线上环境一定要干掉
    // after: require("./mock/mock-server.js")
  },
  configureWebpack: {
    // provide the app's title in webpack's name field, so that
    // it can be accessed in index.html to inject the correct title.
    resolve: {
      // 配置别名
      alias: {
        "@": resolve("src")
      }
    }
  },
  // webpack配置覆盖
  chainWebpack(config) {
    config.plugins.delete("preload"); // TODO: need test
    config.plugins.delete("prefetch"); // TODO: need test

    // set svg-sprite-loader
    config.module
      .rule("svg")
      .exclude.add(resolve("src/icons"))
      .end();
    config.module
      .rule("icons")
      .test(/\.svg$/)
      .include.add(resolve("src/icons"))
      .end()
      .use("svg-sprite-loader")
      .loader("svg-sprite-loader")
      .options({
        symbolId: "icon-[name]"
      })
      .end();

    // set preserveWhitespace
    config.module
      .rule("vue")
      .use("vue-loader")
      .loader("vue-loader")
      .tap(options => {
        options.compilerOptions.preserveWhitespace = true;
        return options;
      })
      .end();

    config
      // https://webpack.js.org/configuration/devtool/#development
      .when(process.env.NODE_ENV === "development", config =>
        config.devtool("cheap-source-map")
      );

    config.when(process.env.NODE_ENV !== "development", config => {
      config
        .plugin("ScriptExtHtmlWebpackPlugin")
        .after("html")
        .use("script-ext-html-webpack-plugin", [
          {
            // `runtime` must same as runtimeChunk name. default is `runtime`
            inline: /runtime\..*\.js$/
          }
        ])
        .end();
      config.optimization.splitChunks({
        chunks: "all",
        cacheGroups: {
          libs: {
            name: "chunk-libs",
            test: /[\\/]node_modules[\\/]/,
            priority: 10,
            chunks: "initial" // only package third parties that are initially dependent
          },
          elementUI: {
            name: "chunk-elementUI", // split elementUI into a single package
            priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
            test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
          },
          commons: {
            name: "chunk-commons",
            test: resolve("src/components"), // can customize your rules
            minChunks: 3, //  minimum common number
            priority: 5,
            reuseExistingChunk: true
          }
        }
      });
      config.optimization.runtimeChunk("single");
    });
  }
};

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于vue.config.js中配置前端代理 的相关文章

  • 一种把四个字节(BYTE)组成一个32位int型的方法

    实现代码如下 int ConvertTo32 int la int lb int lc int ld la 0XFFFFFF la lt lt 24 lb 0XFF00FFFF lb lt lt 16 lc 0XFFFF00FF lc lt
  • linux扩展/dev/sda1分区方法

    一 准备 扩展虚拟机的磁盘空间 在虚拟机关闭状态下 点击虚拟机 gt 设置 gt 硬盘 gt 扩展 扩展自己需要的容量 二 开始扩展 idriver ubuntu su 1 切换至root用户 root ubuntu home idrive
  • Kettle教程(一):ETL简介、Kettle安装部署

    文章目录 前言 一 ETL 1 ETL是啥 2 ETL有啥价值 二 Kettle 1 简介 2 安装 三 总结 前言 随着大数据的不断发展 企业级别的数据转换显得尤为重要 从本文开始和大家一起学习一款开源ETL工具 Kettle 一 ETL
  • Android手写占位式插件化框架之Activity通信、Service通信和BroadcastReceiver通信

    前些天发现了一个蛮有意思的人工智能学习网站 8个字形容一下 通俗易懂 风趣幽默 感觉非常有意思 忍不住分享一下给大家 点击跳转到教程 前言 1 什么是插件化 能运行的宿主APP去加载没有下载的APK文件 并使用APK文件里面的功能 这就叫插
  • Trace Function Enter, Exit and Leave

    http developer nokia com community wiki Trace Function Enter Exit and Leave
  • equals()方法的重写

    equals 本身是一个方法 并不是运算符 而且仅适用于引用数据类型 在java的引用数据时使用时 比较的并不是具体的数值 而是地址值 此时并不能有效地比较引用数据类型中的具体数据 比较地址值对于引用数据类型而言没有用 就出现了equals
  • 数组添加元素的方法-6种

    数组添加元素的方法 6种 使用 length 属性追加元素 使用length属性 可以在数组末尾后面添加一个元素 var arr 1 2 3 4 5 arr length 6 console log arr 1 2 3 4 5 6 使用 p
  • 远程控制 ToDesk

    ToDesk 远程控制软件 支持跨平台的远程控制 有且不限于PC对PC iOS Android也可以直接控制 最近发现的一个好用的远程连接软件 也是近些年非常火热的 远程控制软件 ToDesk 虽然 QQ 和 向日葵 也都可以满足我们实现的
  • 深入理解spring注解之@ComponentScan注解

    2018 05 20 10 02 23 今天主要从以下几个方面来介绍一下 ComponentScan注解 ComponentScan注解是什么 ComponentScan注解的详细使用 1 ComponentScan注解是什么 其实很简单
  • nginx配置同时支持https/wss协议(http/https ws/wss)都可以

    在Nginx代理集群支持SSL 整体架构如下 SSL SSL Secure Socket Layer 安全套接层 简单来说是一种加密技术 通过它 我们可以在通信的双方上建立一个安全的通信链路 因此数据交互的双方可以安全地通信 而不需要担心数
  • iis6.0配置与漏洞复现

    实验环境 windows sesrver 2003 asp环境 1 iss服务器的搭建 1 点击开始 gt 控制面板 gt 添加或删除程序 2 点击添加或删除程序 3 点击应用程序服务器 gt 点击详细信息 点击确定完成配置 4 点击开始
  • 模板的完全特例化和部分特例化

    介绍 完全特例化就是类型完全明确的版本 而部分特例化指的是 只知道是几个参数的函数而不知道参数的类型 或者是只知道是引用或者是指针类型 而不知道具体是char 还是 int 模板特例化实例1 template
  • python 使用setup.py安装packages

    前置条件 安装了python 我的版本是python 3 6 5 安装pip 1 打开cmd 2 安装pip python m ensurepip 3 升级pip python m pip install upgrade pip 本地安装
  • 【ChatGPT实践篇】给小孩制作一个数字人恐龙科普短视频

    以下文章来源于飞书 1 科普文本生成 起初我也是试了不少prompts去让chatgpt自由发挥 生成恐龙科普文章 但科普内容要么过于复杂 要么过于宽泛 无法到达自己想要的效果 既然如此 我决定定制化科普内容 让它实现我的想法 1 1 确定
  • 编译原理13:SLR(1)分析表、LR(1)分析表

    更强的LR分析 可以根据当前单词 来选择是移进还是归约 只要所有移进项目中的点后面的那些终结符 与归约项目生成的非终结符的Follow集合的元素没有重叠 若当前单词属于上述Follow集合里则规约 SLR 1 冲突解决办法 SLR 1 分析
  • c++学习笔记

    c 学习笔记 1 安装环境 1 安装环境 windows 下载MinGW w64 linux

随机推荐

  • 在Mac上安装ArduinoIDE并布置环境支持NodeMcu

    前言 笔者最近在研究Swoole 因为对物联网很感兴趣 在某宝上买来了 NodeMcu 开发板 关于NodeMcu大家请提前做好功课 我选择的是CP2102版 Swoole TCP Server负责和小车通讯 Swoole WebScoke
  • 处理大并发之一 对异步非阻塞的理解

    处理大并发之一 对异步非阻塞的理解 在研究nginx和node js的时候常会遇到异步 非阻塞等 之前自己也经常使用epoll 对其同步与阻塞 异步与非阻塞有了一定的认识 现对参考资料总结下 首先讨论下使用事件驱动 异步编程的优点 充分利用
  • 记一次Elasticsearch节点状态red的整改过程

    文章目录 问题起因 Round 1 Round 2 Round 3 Round 4 总结 问题起因 自己负责审计日志模块的管理功能 同事突然对我说 写入的日志数据全部不能用了 我立即答复 回怼 不可能 说罢 还是去登录系统查看 能查出数据
  • 基于self-attention的BIGRU时间序列预测Python程序

    基于self attention的BIGRU时间序列预测Python程序 特色 1 单变量 多变量输入 自由切换 2 单步预测 多步预测 自动切换 3 基于Pytorch架构 4 多个评估指标 MAE MSE R2 MAPE等 5 数据从e
  • paddlepaddle(四)训练与预测验证

    目录 1 内置高级API封装训练 1 1使用paddle Model 封装模型 1 2用Model prepare 配置模型 1 3用Model fit 训练模型 1 4用Model evaluate 评估模型 1 5用Model pred
  • vue父子组件通信方式哪几种

    第一种 props和 emit parent vue
  • Unity打开工程时卡住的问题

    自从Unity升级了一个版本后 Unity打开工程卡住的问题越来越严重了 具体表现为 选择工程后 Unity窗口消失 但进程还在 有时候等个几分钟能出来 有时候等10分钟都不见得能出来 直观感受上看 似乎是Unity加载工程的时候某一步卡了
  • C++抽象工厂模式:Abstract Factory Pattern

    抽象工厂模式是工厂方法模式的升级版本 工厂方法模式只有一个抽象产品类 而抽象工厂模式有多个 工厂方法模式的具体工厂类只能创建一个具体产品类的实例 而抽象工厂模式可以创建多个 案例 在上一章节工厂方法模式的基础上 将披萨的各种原料生产抽象成一
  • Object-C Cocoapods

    已安装Cocoapods 为项目自动更新配置第三方SDK 在终端中操作如下 1 一般cd到 xcodeproj文件所在目录 cd 空格 路径回车 2 创建Podfile文件 pod init 3 打开Podfile文件并输入 target
  • EnableAutoConfiguration Attributes should be specified via @SpringBootApplic

    在排除数据源加载时 发现这个注解 EnableAutoConfiguration exclude DataSourceAutoConfiguration class 会飘红 这是因为在 SpringBootApplication中已经有 E
  • Qt开发入门教程-创建项目

    入门Qt开发教程 版本 QT 5 15 2 创建项目 1 工程类型选择 Qt Widgets Application 传统的c 不适合移动端开发 QtWidgets 使用QPainter依次为每个界面元素渲染 不断地重复渲染状态 每次打开都
  • 面经-Bosch博世无锡&UL美华

    工作总算有所眉目了 太多的总结暂时还没有太多心情来理清楚 先来两个面经 给可能现在或以后需要的人们1 Bosch 博世无锡柴油系统博世公司 业内的人都知道 汽车部件的巨无霸 最近几年才来到中国 虽然比起德尔福有些稍晚 但发展前景值得期待 无
  • R语言读取Excel的神器——openxlsx

    作为非程序猿的各位同志们 可能最擅长的数据整理软件或者统计软件就是 嗯 没有错 它就是集万千宠爱于一身的E X O 咳咳咳 好了 隆重推出我们的主角 Excel 事实上 Excel是个super强大的软件 基本上用它已经能完成大量的统计分析
  • unity3d大型互动照片墙

    1 本次应客户需求 制作一个大型照片墙互动 输出分辨率为9600 4320 注 unity3d官方推荐最大分辨率为8192 3686 4 经过现场长达24小时暴力测试中途未发生问题 姑且判定可以达到正常标准 废话不多说 先上效果 unity
  • 软件工程实验:银行储蓄系统

  • Eclipse 导入Maven项目,提示Project .. already exists Add a version or custom suffix using “Name template“

    今天从svn 上检出项目至本地的Eclipse workspace 工作空间 提示如下截图错误 Project already exists Add a version or custom suffix using Name templat
  • 解决方案不显示分类的

    解决方案无法显示头文件 源文件等分类 现象 正常显示 错误显示 原因 对应解决方案的filters文件里有不匹配的标签
  • 题目描述001

    题目描述001 入职后 导师会请你吃饭 你选择了火锅 火锅里会在不同时间下很多菜 不同食材要煮不同的时间 才能变得刚好合适 你希望吃到最多的刚好合适的菜 但你的手速不够快 用m代表手速 每次下手捞菜后至少要过m庙才能在捞 每次只能捞一个 那
  • 基于TensorFlow2实现的宠物识别系统(爬虫、模型训练和调优、模型部署)

    目录 开发环境 0 项目准备 1 数据集准备 2 数据预处理 3 构建模型 4 模型训练及验证 5 模型部署 6 项目地址 开发环境 作者 嘟粥yyds 时间 2023年8月25日 集成开发工具 PyCharm Professional 2
  • 关于vue.config.js中配置前端代理

    写在前边 注意开发环境的本地代理或者测试环境的代理 在部署到正式上时 一定要换成线上的IP地址 不然 数据拿不到哦 代理配置 esay mock新地址 模拟接口地址 就以第一个进行说明怎么配置和使用了 只说代理配置部分 其它不再说明 新建项