问题描述:

前端需要修改restful API的url,但是打包之后,配置文件找不到了,如果在npm run build 生成dist后,这个配置也被写死了,传到运行的前端服务器上后,假设某次,api服务器的ip修改了,改动只是更新下这个url,但是却需要会到前端源码,url后,在重新npm run build,然后再把整个dist再重新传到前端服务器,才可以。

解决方法:

用了generate-asset-webpack-plugin 这个插件,在webpack.prod.conf.js中去生成configServer.json文件,让其在build的时候生成json文件,然后再使用axios异步获取json,替换url即可

具体做法:

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

npm install --save-dev generate-asset-webpack-plugin

在webpack.prod.conf.js里面配置

//让打包的时候输出可配置的文件
var GenerateAssetPlugin = require('generate-asset-webpack-plugin');
var createServerConfig = function(compilation){
let cfgJson={ApiUrl:"http://139.129.31.108:8001"};
return JSON.stringify(cfgJson);
}
//让打包的时候输入可配置的文件
new GenerateAssetPlugin({
filename: 'serverconfig.json',
fn: (compilation, cb) => {
cb(null, createServerConfig(compilation));
},
extraFiles: []
})

打包之后,在根目录就会生成serverconfig.json文件

使用:

axios.get("serverconfig.json").then((result)=>{
localStorage.setItem('ApiUrl',result.data.ApiUrl);
console.log(localStorage.getItem('ApiUrl'));
}).catch((error)=>{console.log(error)});

则可以获取到serverconfig.json里面的key  ApiUrl的值,需要注意的是,由于是异步操作,为了通信,可以采用localstorage,把东西存起来,即localstorage.setItem

使用的时候可以用localstorage.getItem

最新文章

  1. [ES] 基础概念
  2. Network Experiment Environment Construction
  3. Valgrind 3.11.0编译安装
  4. 如何将扩展名为.backup的文件导入postgresql中 求步骤 新手 谢谢.
  5. MNIST手写数字数据库
  6. phpmyadmin导入导出大数据文件的办法
  7. devexpress中ASPxGridView控件初始化赋值
  8. Android Metro风格的Launcher开发系列第二篇
  9. python遗传算法实现数据拟合
  10. angular ng-repeat数组中的数组
  11. Class path & Path
  12. 静态,关键字:static 接口,IUSB , API 接口关键字:interface
  13. Java面试基础知识(2)
  14. Java Object Clone
  15. listView 一个 item更新
  16. iso网络模型
  17. 4 进程间通信Queue [kjuː]
  18. C++学习之路(四):线程安全的单例模式
  19. java maven项目 导入jar包注意
  20. ASP.net之HttpModel

热门文章

  1. Java7中的ForkJoin并发框架初探(中)——JDK中实现简要分析
  2. spring boot入门
  3. javaWeb学习总结(2)- http协议
  4. Linux vi 命令详解
  5. zabbix server安装详解
  6. 并行类加载与OSGI类加载
  7. React模块化开发
  8. jq、js中判断checkbox是否选中
  9. 为什么很多人使用#define而不是const定义常量
  10. 热部署环境下,dubbo序列化的bug和优化