最近项目遇到的问题总结(4)

189 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

前言

最近在公司开发新的项目,然后在项目中遇到一些问题,今天通过这篇文章总结下,方便后续方便查阅。

问题

vue-cli5使用的webpack5兼容问题多

之前项目的vue-cli的版本是4.5.0的,然后看到vue-cli的最新版本是5.0.4。所以我就想把vue-cli升级到最新版本。

升级后运行直接报错。

错误日志:

webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.

If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto") }'
- install 'crypto'

上面提示的就是 vue-cli5用的就是webpack5,webpack5做了升级,不再自动引入node的核心模块polyfill,比如crypto,stream等。

需要我们手动引入。

我们可以在vue.config.js中的configureWebpack字段,配置fallback

configureWebpack: {
  resolve: {
    fallback: {
      "crypto": require.resolve("crypto")
    }
  }
}

解决了这个问题,之后又出现一些依赖找不到的问题,或者语法不支持的问题。

所以别在旧项目轻易升级vue-cli5,可以在新项目上使用vue-cli5。

vue-cli的版本和sass-loader版本冲突

上面讲到我升级了vue-cli为vue-cli5,它配套的sass-loader是12版本的。因为我升级了vuecli5,但是项目本身和webpack5不是很兼容,所以后面我回退了vue-cli版本,为4.5.x。

但是我的sass-loader没有回退版本,导致我运行项目时报了错。

sass-loader:

Syntax Error: TypeError: this.getOptions is not a function

后面查找资料发现

image.png

sass-loader从11版本开始,最低版本只支持weback5了。如果你用的其它版本的webpack可能就报错了。

因为我回退了vue-cli版本,导致webpack不是5了。

所以需要把sass-loader降级为10版本或者8版本。

    "sass": "^1.32.11",
    "sass-loader": "^10.1.1"

这样就没有报错了。