vue 安裝scss


常規安裝步驟:

   npm install node-sass --save-dev
   npm install sass-loader --save-dev

在build\webpack.base.conf.js rule中添加

  {
        test: /\.scss$/,
        loaders: ['style', 'css', 'sass']
  }

在style標簽中加入

  <style lang="scss"></style>

編譯正常運行。。。。

可惜我的不正常,安裝過程中出現的一些問題:

問題一

  MSBUILD : error MSB3428: 未能加載 Visual C++ 組件“VCBuild.exe”。要解決此問題,1) 安裝 .NET Framework 2.0
  SDK;2) 安裝 Microsoft Visual Studio 2005;或 3) 如果將該組件安裝到了其他位置,請將其位置
  添加到系統路徑中。 [D:\software\npmcache\prefix\node_modules\node-sass\build\binding.sln]
  已完成生成項目“D:\software\npmcache\prefix\node_modules\node-sass\build\binding.sln”(默認
  目標)的操作 -
  失敗。
  生成失敗。
  “D:\software\npmcache\prefix\node_modules\node-sass\build\binding.sln”(默認目標) (1) ->   
  (_src_\libsass 目標) -> 
  MSBUILD : error MSB3428: 未能加載 Visual C++ 組件“VCBuild.exe”。要解決此問題,1) 安裝 .NET Framework 2.
  0 SDK;2) 安裝 Microsoft Visual Studio 2005;或 3) 如果將該組件安裝到了其他位置,請將其位 
  置添加到系統路徑中。 [D:\software\
  npmcache\prefix\node_modules\node-sass\build\binding.sln]

錯誤原因:缺少windows構建插件
解決方法:在命令行工具中運行:

  npm install –global –production windows-build-tools (全局安裝windows構建工具)

注意:一定要使用管理員打開命令才有權限構建工具

問題二:

  Module build failed:
  #top_menu {
            ^
        Invalid CSS after "#top_menu {": expected "}", was "{"
        in F:\demo-hui\src\components\TopMenu.vue (line 24, column 12)

   @ ./node_modules/vue-style-loader!./node_modules/css-loader?{"sourceMap":true}!./node_modules/vue-loader/lib/style-compiler?{"vue":true,"id":"data-v-            91b6ff58","scoped":true,"hasInlineConfig":false}!./node_modules/sass-loader/lib/loader.js?{"indentedSyntax":true,"sourceMap":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/TopMenu.vue 4:14-398 13:3-17:5 14:22-406

這個問題涉及到 sass 和 scss 的區別。sass 的語法規則是一種縮進語法。而 scss 語法與 css 語法相近,使用大括號。上面那個例子中,home.vue 文件中的 style 標簽,lang 屬性設置成了 sass,代碼如下:

  <style lang="sass" rel="stylesheet/scss" scoped>

然而 style 標簽里面的內容是scss,這導致了編譯器報錯。所以為了解決這個問題,需要把上面的代碼改成如下形式:

  <style lang="scss" rel="stylesheet/scss" scoped>

lang 屬性變成 scss,所有關於語法的地方都設置成 scss,這樣問題就解決了。

問題三

  ERROR  Failed to compile with 1 errors                                              4:16:32 ├F10: PM┤
   error  in ./src/App.vue

  Module build failed: TypeError [ERR_INVALID_ARG_TYPE]: The       "path" argument 
  must be of type string. Received undefined
      at validateString (internal/validators.js:120:11)
      at Object.join (path.js:375:7)
      at getSassOptions (E:\study-in-company\node_modules\sass-loader\dist\utils.js:160:37)
      at Object.loader (E:\study-in-company\node_modules\sass-loader\dist\index.js:36:49)

   @ ./node_modules/vue-style-loader!./node_modules/css-loader?{"sourceMap":true}!./node_modules/vue-loader/lib/style-compiler?{"vue":true,"id":"data-v-      7ba5bd90","scoped":false,"hasInlineConfig":false}!./node_modules/sass-loader/dist/cjs.js?{"sourceMap":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/App.vue 4:14-357 13:3-17:5 14:22-365
   @ ./src/App.vue
   @ ./src/main.js
   @ multi (webpack)-dev-server/client?http://localhost:8080       webpack/hot/dev-server ./src/main.js

這個錯誤是sass-loader 版本造成的,此時的版本是

  "sass-loader": "^10.0.1",

修改版本為

  "sass-loader": "^8.0.2",

然后報以下錯誤:

  Failed to compile with 1 errors            17:08:39

   error  in ./src/components/HelloWorld.vue

  Module build failed: TypeError: loaderContext.getResolve is not a function
      at getWebpackImporter (F:\demo-hui\node_modules\sass-loader\dist\utils.js:274:37)
      at Object.loader (F:\demo-hui\node_modules\sass-loader\dist\index.js:42:61)

   @ ./node_modules/vue-style-loader!./node_modules/css-loader?{"sourceMap":true}!./node_modules/vue-loader/lib/style-compiler?{"vue":true,"id":"data-v-469af010","scoped":true,"hasInlineConfig":false}!./node_modules/sass-loader/dist/cjs.js?{"sourceMap":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/HelloWorld.vue 4:14-375 13:3-17:5 14:22-383
   @ ./src/components/HelloWorld.vue
   @ ./src/router/index.js
   @ ./src/main.js
   @ multi (webpack)-dev-server/client?http://localhost:8080 
  webpack/hot/dev-server ./src/main.js

然后修改版本為

  "sass-loader": "^7.3.1",

編譯不再報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM