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 相关文章推荐
mapper--图片热点区域高亮组件官方站点
Dec 22 Javascript
javascript web对话框与弹出窗口
Feb 22 Javascript
$.format,jquery.format 使用说明
Jul 13 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
Feb 10 Javascript
jQuery中delegate与on的用法与区别示例介绍
Dec 20 Javascript
jQuery功能函数详解
Feb 01 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
Nov 01 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
May 03 Javascript
AngularJs表单验证实例代码解析
Nov 29 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
Mar 31 Javascript
基于Node.js实现压缩和解压缩的方法
Feb 13 Javascript
JavaScript实现切换多张图片
Jan 27 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绘制一条弧线的方法
2015/01/24 PHP
PHP fprintf()函数用法讲解
2019/02/16 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
PHP PDO操作总结
2014/11/17 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
python程序控制NAO机器人行走
2019/04/29 Python
python Django 创建应用过程图示详解
2019/07/29 Python
python实现连连看游戏
2020/02/14 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
面向对象概念面试题(.NET)
2016/11/04 面试题
酒吧总经理岗位职责
2013/12/10 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
2014年收银工作总结
2014/11/13 职场文书
董事长致辞
2015/07/29 职场文书
会议主持词通用版
2019/04/02 职场文书
Python爬虫基础初探selenium
2021/05/31 Python
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android