参考:
1.https://blog.csdn.net/u012193330/article/details/83310924 webpack中的path、publicPath、contentBase的区分
2.https://www.cnblogs.com/beichengshiqiao/p/17339341.html vue全家桶进阶之路48:Vue3 跨域配置devServer的参数和设置
3.https://www.cnblogs.com/jingxuan-li/p/14656997.html Webpack之 webpack-dev-server 中的 contentBase配置及作用
我的情况
vue2项目,想抽取请求配置文件,达到打包后修改配置文件即可修改请求地址,不用二次打包的效果。
1.根目录下(与index.html文件同级)新建public/js/config.js文件,内容如下:
(function () { const APP_CONFIG = { API_BASE_URL: 'http://xxx:8080', // 后台请求地址 }; if (window) window.APP_CONFIG = APP_CONFIG; })();
2.html文件中引入:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no"> <link rel="icon" href="<%= htmlWebpackPlugin.options.url %>favicon.ico"> <title>测试系统</title> <script src="public/js/config.js"></script> </head> <body> <div id="app"></div> </body> </html>
3.具体使用:
axios.defaults.baseURL = window.APP_CONFIG.API_BASE_URL;
注意:一定不要在内部的公共js,如封装的http.js中引入config.js,打包的时候会对其进行编译,导致打包后再修改请求地址无效。
4.打包配置
我的项目打包时指定的是webpack.config.prod.js文件:
...
// 不需要压缩的静态文件 new CopyWebpackPlugin({ patterns: [ { from: path.resolve(__dirname, './public'), to: 'public' } ] })
...
出现的问题
1.本地启动,config.js文件404
2.本地启动,修改config.js文件后不生效
3.打包一次后,问题1解决了,但问题2仍存在
原因
静态资源根目录 contentBase 配置有误。
我的原webpack.config.dev.js文件有指定静态资源根目录:
const path = require('path'); ... devServer: { ... contentBase: path.resolve(__dirname, './dist'), // << 问题关键 指定静态文件的目录,默认为项目根目录 ... }
解决方法
注释掉,默认根目录即可
标签:配置文件,js,修改,path,config,打包 From: https://www.cnblogs.com/linjiangxian/p/18513384