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 隐藏/显示指定的区域附HTML元素【legend】用法
Mar 05 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
Dec 06 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
Aug 26 Javascript
ajax分页效果(bootstrap模态框)
Jan 23 Javascript
Express + Session 实现登录验证功能
Sep 08 Javascript
JavaScript同源策略和跨域访问实例详解
Apr 03 Javascript
详解Axios 如何取消已发送的请求
Oct 20 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
JavaScript实现五子棋小游戏
Oct 26 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
Oct 30 Javascript
vant 时间选择器--开始时间和结束时间实例
Nov 04 Javascript
vue前端工程的搭建
Mar 31 Vue.js
微信小程序开发教程之增加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
微信自定义菜单的处理开发示例
2015/04/16 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
详解Vue.directive 自定义指令
2019/03/27 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
Django 路由控制的实现代码
2018/11/08 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
客服主管岗位职责
2013/12/13 职场文书
班长竞选演讲稿
2014/04/24 职场文书
公证书
2019/04/17 职场文书
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL