webpack 1.x升级过程中的踩坑总结大全


Posted in Javascript onAugust 09, 2017

前言

大家应该都知道,Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。因为最近在对博客做SSR,无奈vue ssr demo或例子都是基于webpack2的。博主在webpack1.x上折腾了许久,vue-ssr-server-bundle.json文件生成仍然还是遥遥无期。最后还是乖乖地开始了webpack升级之旅。

本文主要记录升级过程中遇到的一些坑和解决办法,可能有些遗漏了,能记多少记多少吧。话不多说了,来一起看看详细的介绍吧。

webpack 1.x升级过程中的踩坑总结大全

错误:Error: Chunk.entry was removed. Use hasRuntime()

解决办法:升级extract-text-webpack-plugin ("extract-text-webpack-plugin": "^2.1.0",)

错误:Error: Breaking change: extract now only takes a single argument.

// 错误提示

Error: Breaking change: extract now only takes a single argument. Either an options object *or* the loader(s).
Example: if your old code looked like this:
 ExtractTextPlugin.extract('style-loader', 'css-loader')

You would change it to:
 ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' })

原因是webpack2对loader的配置做了一些调整,修改 ExtractTextPlugin配置即可:

{
 test: /\.less$/,
 use: ExtractTextPlugin.extract({
  fallback: 'style-loader',
  use: ['css-loader', 'less-loader']
 })
},

htmlWebpackPlugin生成的html,没有引入css, app.js

修改配置,chunks属性使用files包裹

{
 filename: pageName + '.html',
 template: __dirname + '/src/' + pageName + '.html',
 chunks: pageConf.chunks,
 inject: true
};
{
 filename: pageName + '.html',
 template: __dirname + '/src/' + pageName + '.html',
 files: {
  chunks: pageConf.chunks,
 },
 inject: true
};

eslint不能识别es6语法

✘ http://eslint.org/docs/rules/ Parsing error: The keyword 'import' is reserved
 src\entry.client.js:7:1
 import { createApp } from './app'
 ^

解决办法:修改eslint配置,增加

"parser": "babel-eslint",

错误: Module build failed: BrowserslistError: Unknown version 57 of and_chr

npm 包过期,删除node_modules,从新安装依赖即可

webpack dist打包后,不生成公共css文件

vee-loader配置不对,加上配置 extractCSS: true

{
 test: /\.vue$/,
 loader: 'vue-loader',
 options: {
  extractCSS: isProd,
  preserveWhitespace: false,
  postcss: [
  require('autoprefixer')({
   browsers: ['last 3 versions']
  })
  ]
 }
},

小结

升级过程总体上还算顺利,vue-ssr-server-bundle.json也生成了,不过这仅仅是ssr的开始,一大堆问题等着解决。 如果不熟悉webpack2可以先花点时间看下官网介绍,英文不好的可以看翻译版。 整个升级过程总得来说,就是很多loader得升级,另一个要注意的就是loader的配置了,其它似乎没什么特别的地方。

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript实现的使用方向键控制光标在table单元格中切换
Nov 17 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
Aug 29 Javascript
alert中断settimeout计时功能
Jul 26 Javascript
Javascript之this关键字深入解析
Nov 12 Javascript
简洁Ajax函数处理(示例代码)
Nov 15 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
JavaScript日期时间与时间戳的转换函数分享
Jan 31 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
Mar 05 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
使用layer弹窗,制作编辑User信息页面的方法
Sep 27 Javascript
JS实现可控制的进度条
Mar 25 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 #Javascript
javascript编程开发中取色器及封装$函数用法示例
Aug 09 #Javascript
vuejs父子组件之间数据交互详解
Aug 09 #Javascript
Angular在模板驱动表单中自定义校验器的方法
Aug 09 #Javascript
浅谈react+es6+webpack的基础配置
Aug 09 #Javascript
js中less常用的方法小结
Aug 09 #Javascript
利用JS做网页特效_大图轮播(实例讲解)
Aug 09 #Javascript
You might like
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
js中style.display=""无效的解决方法
2014/10/30 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
财务会计人员求职的自我评价
2014/01/13 职场文书
庆国庆活动总结
2014/08/28 职场文书
客户答谢会活动方案
2014/08/31 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
一篇文章学会Vue中间件管道
2021/06/20 Vue.js