• vue2 sass 安装及使用


    最近在看前端。其一因为手里有个项目uniapp的里面使用了sass,但是有sass报错,其次想自己写个vue2后台,感觉sass写起来科学点。但是……版本这个东西……太费劲了……

    vue2-cli集成webpack,使用vue create 项目名后再安装sass相当于在webpack的基础上安装sass。需要安装sass依赖包 sass-loader,以及它的依赖包sass-loader。看很多教程说在build/webpack.config.js中再改东西,但是我用vue2创建的项目没找到这个文件先忽略。

    安装环境:

    win10

    webpack 5.75 //系统全局

    vue2

    @vue/cli 4.5.14//重点

    安装步骤:

    vue create testsass

    cd testsass

    npm i sass-loader

    1. npm i node-sass
    2. npm WARN deprecated @npmcli/move-file@1.1.2: This functionality has been moved to
    3. @npmcli/fs
    4. npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to
    5. @npmcli/fs
    6. added 140 packages in 11s

    贴出来就想证明下,这步没报错……

    npm i node-sass

    报错:

    1. npm i sass-loader
    2. npm ERR! code ERESOLVE
    3. npm ERR! ERESOLVE could not resolve
    4. npm ERR!
    5. npm ERR! While resolving: testsass@0.1.0
    6. npm ERR! Found: webpack@4.46.0
    7. npm ERR! node_modules/webpack
    8. npm ERR! peer webpack@"^4.0.0" from @intervolga/optimize-cssnano-plugin@1.0.6
    9. npm ERR! node_modules/@intervolga/optimize-cssnano-plugin
    10. npm ERR! @intervolga/optimize-cssnano-plugin@"^1.0.5" from @vue/cli-service@4.5.19
    11. npm ERR! node_modules/@vue/cli-service
    12. npm ERR! peer @vue/cli-service@"^3.0.0 || ^4.0.0-0" from @vue/cli-plugin-babel@4.5.19
    13. npm ERR! node_modules/@vue/cli-plugin-babel
    14. npm ERR! dev @vue/cli-plugin-babel@"~4.5.14" from the root project
    15. npm ERR! 4 more (@vue/cli-plugin-eslint, @vue/cli-plugin-router, ...)
    16. npm ERR! peer webpack@"^4.0.0 || ^5.0.0" from @soda/friendly-errors-webpack-plugin@1.8.1
    17. npm ERR! node_modules/@soda/friendly-errors-webpack-plugin
    18. npm ERR! @soda/friendly-errors-webpack-plugin@"^1.7.1" from @vue/cli-service@4.5.19
    19. npm ERR! node_modules/@vue/cli-service
    20. npm ERR! peer @vue/cli-service@"^3.0.0 || ^4.0.0-0" from @vue/cli-plugin-babel@4.5.19
    21. npm ERR! node_modules/@vue/cli-plugin-babel
    22. npm ERR! dev @vue/cli-plugin-babel@"~4.5.14" from the root project
    23. npm ERR! 4 more (@vue/cli-plugin-eslint, @vue/cli-plugin-router, ...)
    24. npm ERR! 19 more (@vue/cli-plugin-babel, @vue/cli-plugin-eslint, ...)
    25. npm ERR!
    26. npm ERR! Could not resolve dependency:
    27. npm ERR! sass-loader@"*" from the root project
    28. npm ERR!
    29. npm ERR! Conflicting peer dependency: webpack@5.75.0
    30. npm ERR! node_modules/webpack
    31. npm ERR! peer webpack@"^5.0.0" from sass-loader@13.2.0
    32. npm ERR! node_modules/sass-loader
    33. npm ERR! sass-loader@"*" from the root project
    34. npm ERR!
    35. npm ERR! Fix the upstream dependency conflict, or retry
    36. npm ERR! this command with --force, or --legacy-peer-deps
    37. npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
    38. npm ERR!
    39. npm ERR! See C:\Users\ZHAA\AppData\Local\npm-cache\eresolve-report.txt for a full
    40. report.
    41. npm ERR! A complete log of this run can be found in:
    42. npm ERR! C:\Users\ZHAA\AppData\Local\npm-cache\_logs\2022-11-19T07_58_28_099Z-debug.log

    根据内容大概意思,找到webpack环境4.46.0需要5版本及以上,就是安装的版本高了。

    找到问题查版本……

    npm 13:sass-loader - npm

    npm 13 git:https://github.com/webpack-contrib/sass-loader/blob/master/package.json

    确实如报错所说……

    然后用上述方法看了 从7版本到13版本的,都是5.0以上,但是通过实践7版本是可以按的。

    1. npm i sass-loader@7
    2. added 5 packages in 3s
    3. npm uninstall sass-loader
    4. removed 5 packages in 3s
    5. D:\workspace\html\vue\testsass>npm i sass-loader@8
    6. npm ERR! code ERESOLVE
    7. npm ERR! ERESOLVE could not resolve
    8. npm ERR!
    9. npm ERR! While resolving: sass-loader@8.0.2
    10. npm ERR! Found: node-sass@8.0.0
    11. npm ERR! node_modules/node-sass
    12. npm ERR! node-sass@"^8.0.0" from the root project
    13. npm ERR!
    14. npm ERR! Could not resolve dependency:
    15. npm ERR! peerOptional node-sass@"^4.0.0" from sass-loader@8.0.2
    16. npm ERR! node_modules/sass-loader
    17. npm ERR! sass-loader@"8" from the root project
    18. npm ERR!
    19. npm ERR! Conflicting peer dependency: node-sass@4.14.1
    20. npm ERR! node_modules/node-sass
    21. npm ERR! peerOptional node-sass@"^4.0.0" from sass-loader@8.0.2
    22. npm ERR! node_modules/sass-loader
    23. npm ERR! sass-loader@"8" from the root project
    24. npm ERR!
    25. npm ERR! Fix the upstream dependency conflict, or retry
    26. npm ERR! this command with --force, or --legacy-peer-deps
    27. npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
    28. npm ERR!
    29. npm ERR! See C:\Users\ZHAA\AppData\Local\npm-cache\eresolve-report.txt for a full report.
    30. npm ERR! A complete log of this run can be found in:
    31. npm ERR! C:\Users\ZHAA\AppData\Local\npm-cache\_logs\2022-11-19T08_31_26_140Z-debug.log

    事实证明,就是7好使……但是后面还是有问题……

    改testsass\src\components\HelloWord.vue:

    1. <style lang="sass">
    2. body{
    3. padding:10px;
    4. }
    5. </style

      报错:Syntax Error: Error: Node Sass version 8.0.0 is incompatible with ^4.0.0.

       原因是node-sass版本过高。

    node-sass 换成6的:

    1. npm uninstall node-sass
    2. npm WARN cleanup Failed to remove some directories [
    3. npm WARN cleanup [
    4. npm WARN cleanup 'D:\\workspace\\html\\vue\\testsass\\node_modules\\.node-sass-3UXcrxZ0',
    5. npm WARN cleanup [Error: EPERM: operation not permitted, unlink 'D:\workspace\html\vue\testsass\node_modules\.node-sass-3UXcrxZ0\vendor\win32-x64-93\binding.node'] {
    6. npm WARN cleanup errno: -4048,
    7. npm WARN cleanup code: 'EPERM',
    8. npm WARN cleanup syscall: 'unlink',
    9. npm WARN cleanup path: 'D:\\workspace\\html\\vue\\testsass\\node_modules\\.node-sass-3UXcrxZ0\\vendor\\win32-x64-93\\binding.node'
    10. npm WARN cleanup }
    11. npm WARN cleanup ]
    12. npm WARN cleanup ]
    13. removed 140 packages in 58s
    14. npm install node-sass@6
    15. added 93 packages in 1m

    这些操作之后按理说应该已经没问题了,至少报错应该不一样了吧,但是并没有,还得把pageage-lock.json再删一遍,再编译一遍报错就改了……mmp

    Syntax Error: Error: Node Sass version 6.0.1 is incompatible with ^4.0.0.

    我就好奇这4.0.0指的是啥……

    好吧vue-cli内置的weback4.0版本,接着改……

    省去查版本的时间:sass-loader、node-sass安装失败问题解决_前端学习007的博客-CSDN博客

    根据这篇文章用4.13的,然后我按4版本时安装时报错。

    改变修改思路,升级vue-cli版本,理论上配置根据当前的package.json,cli只是构建目录,之前的项目应该不会受影响。

    既然是vue-cli内置的webpack版本问题,一个升级vue-cli,一个直接用webpack。

    目前cli升级完了,明天继续折腾。

    这前端……好麻烦,比我折腾linux还麻烦……

    这篇文章,总结下来就一个观点,vue-cli 4版本的用sass不方便。

  • 相关阅读:
    是的你没看错,js生成word文档
    字节码进阶之JVM Attach API详解
    计蒜客T3364 蒜头君的回文串(C++语言实现)
    使用Python调用API接口获取淘宝商品数据
    【Q&A】Troubleshooting R Studio
    直线导轨滑块的固定方式
    文本检测之DBNet,DBNet++
    Maleimide-PEG-DMPE,科研试剂DMPE-PEG-Mal供应
    [MAUI]在.NET MAUI中复刻苹果Cover Flow
    聪明人和傻子和程序员
  • 原文地址:https://blog.csdn.net/lsswear/article/details/127937777