前言
今天继续迁移一个老的react项目,因为新的脚手架起的是webpack v4.x 版本,而老项目是v1.x 版本,所以配置上有蛮多的改变…在一堆报错中冲出杀路…
es2015报错
2017年Babel 的官网上在9月宣布 ES2015 / ES2016/ ES2017 等等 ES20xx 时代的 presets 通通被废弃(deprecated),取而代之的是 babel-preset-env,并且承诺它将成为“未来不会过时的(future-proof)”解决方案。
也就是说: babel preset将基于你的实际浏览器及运行环境,自动的确定babel插件及polyfills,转译ES2015及此版本以上的语言。
解决方案:
1 | npm uninstall --save-dev babel-preset-es2015 |
react报错
1 | Error: Cannot find module 'babel-preset-react' from '/Users/me/Desktop/reflask' - If you want to resolve "react", use "module:react" - Did you mean "@babel/react"? at Function.module.exports [as sync] |
1 | webpack.config.js |
解决方案:
1 | 把 |
插件不支持
extract-text-webpack-plugin插件主要是为了抽离css样式,防止将样式打包在js中引起页面样式加载错乱的现象。但是只支持webpack3
mini-css-extract-plugin插件也是用来提取css到单独的文件的,该插件有个前提条件,只能用于webpack 4及以上的版本,所以如果使用的webpack版本低于4,,那还是用回extract-text-webpack-plugin插件。
添加依赖
1 | npm install --save-dev mini-css-extract-plugin |
webpack配置
1 | const MiniCssExtractPlugin = require("mini-css-extract-plugin"); |
运行webpack要加参数
从4.0开始:运行webpack一定要加参数
– mode development 或者 –mode production,
分别对应开发环境和生产环境,否则会报警告:
1 | "scripts": { |
babel报错
现在改用babel-loader,但是换成babel-loader后也是老报错:Error: Cannot find module ‘@babel/core’
原因:官方默认babel-loader | babel 对应的版本需要一致: 即babel-loader需要搭配最新版本babel
1 | 两种解决方案: |