vue中打包生成的api.js配置时候无效,怎么办?

2021-03-05 11:04发布

[图]修改红色框中的url在index.html中无效,依然是最开始打包生成时候的url

修改红色框中的url在index.html中无效,依然是最开始打包生成时候的url


4条回答
大冬瓜
2楼 · 2021-03-05 13:59

修改红色框中的url在index.html中无效,依然是最开始打包生成时候的url

小磊子
3楼 · 2021-03-05 14:14

nuxt.js中按需导入ant-design-vue无效,只有按钮这些简单的组件可以导入成功,有子组件的组件只有父级组件可以导入,样式也无法导入

不吃鱼的猫
4楼 · 2021-03-06 10:10

nuxt.js中按需导入ant-design-vue无效,只有按钮这些简单的组件可以导入成功,有子组件的组件只有父级组件可以导入

我是大脸猫
5楼 · 2021-03-07 22:27

我们的vue代码打包上传到服务器之后,生成一个配置文件,里面可以配置域名或其它什么字段之类的,这样以后换了域名,只修改这个配置文件即可。

  • 安装generate-asset-webpack-plugin插件

npm install --save-dev generate-asset-webpack-plugin
  • 配置webpack.prod.conf.js文件

const GenerateAssetPlugin = require('generate-asset-webpack-plugin');const createServerConfig = function (compilation) {
  let cfgJson = { ApiUrl: compilation };
  return JSON.stringify(cfgJson);}

//让打包的时候输入可配置的文件//这段代码加在plugins:[]中
  new GenerateAssetPlugin({
        filename: 'serverconfig.json',
        fn: (compilation, cb) => {
            cb(null, createServerConfig(compilation));
        },
        extraFiles: []
    })
  • 输入npm run build打包代码  结果如下


    image.png

  • 以后需要修改域名之类的  在serverconfig.json修改即可


    image.png

  • 获取ApiUrl,在main.js中引入该文件

import axios from 'axios'import router from './router'import '../static/config.js'import $ from 'jquery'if(process.env.NODE_ENV === 'production' ){
    $.ajax({
        url: 'serverconfig.json',
        async: false,
        type: 'get',
        dataType: "json",
        success: function (rs) {
            if (rs.ApiUrl) {
                axios.defaults.baseURL = rs.ApiUrl;
            }
        }
    });}else{//开发环境
    axios.defaults.baseURL = g_baseURL;//在static下的config.js获取服务器地址}axios.defaults.timeout = 60000;// axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'//http request 拦截器axios.interceptors.request.use(
    config => {
        const token = sessionStorage.authorization;
        if (token) {
            // 这里将token设置到headers中
            config.headers.Authorization = token;
             //这里主要是为了兼容IE9
            var browser = navigator.appName;
            var b_version = navigator.appVersion;
            if (browser == 'Netscape' && b_version.indexOf(';') < 0) {  //火狐
             } else {
                if (b_version.indexOf(';') < 0) {
                    return config;
                }
                var version = b_version.split(";");
                var trim_Version = version[1].replace(/[ ]/g, "");
                if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE9.0") {
                    if (config.url.indexOf('?') > 0) {
                        config.url = config.url + "&AUTHORIZATION=" + token;
                    }
                    else {
                        config.url = config.url + "?AUTHORIZATION=" + token;
                    }
                }
            }
        } else {
            sessionStorage.removeItem('authorization');
            localStorage.clear();  //清空缓存
            if (router.currentRoute.name && router.currentRoute.name.toLowerCase() == "login") {
            //这里需要排除登陆(或第一次请求获取token)的时候的验证
            } else {
                return null;
            }
        }
        return config    },
    error => {
       return Promise.reject(error)
    });//http response 拦截器axios.interceptors.response.use(
    response => {
        return response;
    },
    error => {
        console.log(error)
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    //返回 401 清除token信息并跳转到登录页面
                    sessionStorage.removeItem('authorization');
                    router.replace({
                        path: '/login',
                        //query: {redirect: router.currentRoute.fullPath}//登录成功后跳入浏览的当前页面
                    })
                case 400:
                    error.message = '请求错误'
                    break
                case 403:
                    error.message = '拒绝访问'
                    break
                case 404:
                    error.message = `请求地址出错: ${error.response.config.url}`
                    break
                case 408:
                    error.message = '请求超时'
                    break
                case 500:
                    error.message = '服务器内部错误'
                    break
                case 501:
                    error.message = '服务未实现'
                    break
                case 502:
                    error.message = '网关错误'
                    break
                case 503:
                    error.message = '服务不可用'
                    break
                case 504:
                    error.message = '网关超时'
                    break
                case 505:
                    error.message = 'HTTP版本不受支持'
                    break
                default:
                    error.message = "连接服务器异常";
            }
        }else{
            error.message = "连接服务器失败";
            setTimeout(()=>{
                sessionStorage.removeItem('authorization');
                router.replace({
                    path: '/login',
                    //query: {redirect: router.currentRoute.fullPath}//登录成功后跳入浏览的当前页面
                })
            },500)
        }
        return Promise.reject(error.message)   // 返回接口返回的错误信息
    });export default axios;



相关问题推荐

  • 回答 120

    相对前几年来说,要高上不少了,毕竟入行的人也是越来越多了,基础的工作对应想要参与的人群基数越来越大,但是对于高端人才的需求还是很多,人才还是相对稀缺性的。所以,想要学web或者其他技术也一样,别等,别观望。web前端就业方向特别多包括web前端开发...

  • 回答 25

    相对定位和绝对定位是定位的两种表现形式,区别如下:一、主体不同1、相对定位:是设置为相对定位的元素框会偏移某个距离。2、绝对定位:absolute 脱离文档流,通过 top,bottom,left,right 定位。二、特点不同1、相对定位:在使用相对定位时,无论是否进行移...

  • 抓包是什么意思?2020-04-01 17:36
    回答 7
    已采纳

    抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。抓包可以通过抓包工具来查看网络数据包内容。通过对抓获的数据包进行分析,可以得到有用的信息。目前流行的...

  • 回答 89

    常用的前端框架有Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架等等

  • 回答 65
    已采纳

    前端是目的就业前景非常不错的一个计算机技术,但是自学的话还是有一定难度的,网络上自学是碎片化的,同时互联网技术跟新换代快,自己的话比较吃力也学习不到最新的技术。

  • SSR 是什么意思?2020-03-20 18:56
    回答 6

    SSR就是一台服务器,可以利用 SSR 在远程的服务器上配置 SSR,使其能够成为 SSR 节点,这样本地电脑或者其它设备利用 SSR 节点实现 VPN 或者远程上网及游戏加速等方面。ShadowsocksR(简称 SSR)是 Shadowsocks 分支,在 Shadowsocks 的基础上增加了一些数据...

  • 回答 52
    已采纳

    计算机培训方向比较多,建议找适合自己的方向选择培训编程类:JAVA、WEB、Python、C/C++、C#等测试类:软件测试运维类:云计算、网络安全设计类:UI设计、3D建模等

  • 回答 11

    1、代码判断xAxis: {type: &#39;time&#39;,splitLine: {show: false},interval: 3600, // 设置x轴时间间隔axisLabel: {formatter: function(value, index) {return liangTools.unix2hm(value)}}},首先要把xAxis 显示类型设置成time,然后设置对应X轴......

  • 回答 8

    HTML5 + CSS + JavaScript 开发 跨平台重用代码 

  • 回答 4

    采用rem单位自动响应,并提供独有栅格化系统快速定义宽高、边距节省css代码量,同时总结各大型移动端网页,提供一套ui颜色搭配规范,尺寸规范,字体规范等。

  • 回答 10

    iView UI、ioni、SUI

  • 回答 6

     jQTouch 

  • 回答 4

    如果只是普通的移动端用vue react 或者dva 如果是要编译成小程序什么的或者混生 就用uni-app(对应vue语法)taro(对应react) 或者纯原生 这个没有限制的,自己怎么舒服怎么来

  • 回答 4

    因为可以运用在网页和小程序的开饭中,而且开源,用着便宜,企业都很喜欢

  • 回答 10

    一、Visual Studio Code下载地址:https://code.visualstudio.com/微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。Visual Stud...

  • 回答 9

    jQuery自带淡入淡出效果 https://www.w3school.com.cn/jquery/jquery_fade.asp 看看这个 

没有解决我的问题,去提问