时间:2021-05-18
使用npm run dev时运行是ok的,但是npm run build打包时iview报错,
如下:
原因是iview中使用了es6语法,然而uglifyJs是不支持的,打开我们的build/webpack.prod.conf.js文件,可以看到
// UglifyJs do not support ES6+, you can also use babel-minify for better treeshaking: https://github.com/babel/minifynew webpack.optimize.UglifyJsPlugin({compress: {warnings: false},sourceMap: config.build.productionSourceMap,parallel: true}),已经提示了uglifyJs不支持es6.
解决方案:
在webpack.base.conf.js中,我们先在js编译的时候添加如下:
{test: /\.js$/,loader: 'babel-loader',include: [resolve('src'),resolve('test'),resolve('/node_modules/iview/src'),resolve('/node_modules/iview/packages')]},先让iview的es6语法经过babel来转换,然后在build/webpack.prod.conf.js中,注释掉原来的uglifyJs,引入外部的uglifyJs对js进行压缩混淆,代码如下:
// UglifyJs do not support ES6+, you can also use babel-minify for better treeshaking: https://github.com/babel/minify// new webpack.optimize.UglifyJsPlugin({// compress: {// warnings: false// },// sourceMap: config.build.productionSourceMap,// parallel: true// }),new UglifyJsPlugin({// 使用外部引入的新版本的js压缩工具parallel: true,uglifyOptions: {ie8: false,ecma: 6,warnings: false,mangle: true,// debug falseoutput: {comments: false,beautify: false,// debug true},compress: {// 在UglifyJs删除没有用到的代码时不输出警告warnings: false,// 删除所有的 `console` 语句// 还可以兼容ie浏览器drop_console: true,// 内嵌定义了但是只用到一次的变量collapse_vars: true,// 提取出出现多次但是没有定义成变量去引用的静态值reduce_vars: true,}}}),当然我们要先引入外部插件:
const UglifyJsPlugin =require('uglifyjs-webpack-plugin');如此便可解决。
以上这篇解决iview打包时UglifyJs报错的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1iview的router控制需求最近在使用iview框架写项目,遇到了一些路由控制上的问题,解决过程中也有一些心得,故在此记录下来.每个项目在开发时,对于类似
打包压缩js与css由于webpack本身集成了UglifyJS插件(webpack.optimize.UglifyJsPlugin)来完成对JS与CSS的压缩
在vue+cli项目中使用iview组件及icon图标,打包后icon不显示,解决办法:1.在build文件夹下找到utils.js文件,把publicPath
由于Iview编译使用到了es6的一些新特性,InternetExplorer所有版本中都会报错,缺少includes、findIxdex等问题。本人研究涉及到
在用iview框架的checkbox多选框时遇到了一个校验问题在iview给的例子中代码如下https://ponents/checkbox全选exportde