报错信息
TypeError: this.getOptions is not a function
我在安装完 sass-loader 之后,启动项目报的这个错误。
问题分析
这个是因为 sass-loadersass-loader sass-loader 的版本过高或过低,与当前node版本不对应,不兼容 getOptions 函数方法,所以需要对 sass-loader 进行升级或降级处理。
解决方案
npm uninstall node-sass sass-loader
npm install sass-loader@版本号 node-sass@版本号 --save-dev
命令行卸载node-sass和sass-loader
重新安装跟你当前node版本对应的node-sass和sass-loader。我的node 版本是v14.18.2,下面是我在用的版本组合
node-sass: ^4.14.1;
sass-loader: ^7.3.1;
也可以不用 node-sass 用 sass 代替,推荐大家去安装 sass,因为它对环境的依赖比较低
当我确定了 sass-loader 的版本之后,直接安装的 sass,默认最新版本,就没有报错,可以成功运行
npm i sass --save-dev
node
版本与 node-sass
版本的对应关系
1、可自行查看node-sass官方文档
2、可参考下面的表格
NodeJs 版本 | node-sass 版本 | node |
---|---|---|
Node 19 | 8.0+ | 111 |
Node 18 | 8.0+ | 108 |
Node 17 | 7.0+,<8.0 | 102 |
Node 16 | 6.0+ | 93 |
Node 15 | 5.0+,<7.0 | 88 |
Node 14 | 4.14+ | 83 |
Node 13 | 4.13+,<5.0 | 79 |
Node 12 | 4.12+,<8.0 | 72 |
Node 11 | 4.10+,<5.0 | 67 |
node-sass 和 sass-loader 的版本对应关系
要查看 node-sass 和 sass-loader 的各个版本的对应关系,可以参考以下表格:
node-sass 版本 | sass-loader 版本 |
^6.0.0 | ^10.0.0 |
^5.0.0 | ^10.0.0 |
^4.0.0 | ^8.0.0 |
^3.0.0 | ^7.0.0 |
^2.0.0 | ^4.0.0 |
^1.0.0 | ^2.0.0 |
其中, ^ 表示兼容该版本及以上的版本。例如,node-sass 版本为 ^4.0.0,表示 sass-loader 的版本应该为 ^8.0.0 或更高版本,但不包括 10.0.0 及以上版本。
这些信息可以在 npm 官方网站或者各自的 GitHub 仓库中找到。如果你使用 npm,可以使用以下命令来查看:
npm view node-sass peerDependencies
npm view sass-loader peerDependencies
这些命令将显示 node-sass 和 sass-loader 的 peerDependencies,其中包括它们所需的其他依赖项和版本范围。
如果觉得此文章不错或对你有所帮助,期待你的点赞支持💫!❤️ni!