vue2.x項(xiàng)目中關(guān)于/deep/ 突然不能被識(shí)別且報(bào)錯(cuò)的問(wèn)題盹愚,記錄筆記
前兩天組里實(shí)習(xí)生突然說(shuō)自己項(xiàng)目跑不起來(lái)了侦锯,報(bào)錯(cuò)信息大概類(lèi)似
Module build failed (from ./node modules/sass-loader/dist/cjs.js):
SassError: expected selector.
/deep/::-webkit-scrollbar{
^
我第一反應(yīng)是讓他自查項(xiàng)目里的sass-loader
和node-sass
的版本是不是變了,本地環(huán)境是否有變化
但是他說(shuō)沒(méi)變,最近也沒(méi)動(dòng)過(guò)項(xiàng)目代碼,今天突然就跑不起來(lái)了惜颇。
然后我嘗試rebuild
包里的node-sass
,清除緩存重新安裝依賴等等少辣,均未生效凌摄。
再然后我把在其他同事中能正常運(yùn)行的項(xiàng)目的node_modules
拷貝給他的機(jī)器上,依舊無(wú)效漓帅。
甚至在別人那能完美運(yùn)行的整個(gè)項(xiàng)目在這都跑不起來(lái)锨亏。我懷疑他全局環(huán)境出現(xiàn)了問(wèn)題...
后來(lái)我發(fā)現(xiàn)了大佬的這篇文章痴怨,跟這里遇到的問(wèn)題幾乎一模一樣。
在項(xiàng)目的根目錄運(yùn)行啟動(dòng) node 器予,輸入 require.resolve('sass')
如果模塊解析成功返回了 sass 包的路徑浪藻,則說(shuō)明 `sass-loader `錯(cuò)誤地加載到了`sass`而不是 `node-sass` 。
require.resolve('sass')
果然發(fā)現(xiàn)他在自己的C盤(pán)里一份全局的node_modules
中的sass
路徑
原因是 sass-loader
并不是解析項(xiàng)目的 package.json
而是直接在運(yùn)行時(shí)里依次嘗試加載 sass(dart-sass)乾翔、node-sass爱葵、sass-embedded
(sass 同個(gè)團(tuán)隊(duì)維護(hù)擁有相同 API 的版本,運(yùn)行更快反浓,但是需要 dart 的運(yùn)行環(huán)境)
所以在項(xiàng)目里sass-loader
找到了可以依賴的sass
勾习,所以沒(méi)有使用node-sass
因?yàn)檫@份node_modules
是之前他誤操作install的,所以移除之后 項(xiàng)目正常運(yùn)行~
另:原作者推薦最好在 sass-loader 中指定 implementation 參數(shù)
的方式懈玻,防止這種烏龍出現(xiàn)
原作者的具體做法和排錯(cuò)歷程異步這篇文章
做個(gè)筆記記錄巧婶。
done