話不多說直接上代碼:

如圖,點紅點的三行引入了一個組件,內容是同意注冊協議的彈窗。但是在run dev的時候提示說內存溢出了(out of memory)...經過多方排查,定位到這個組件,警察叔叔就是他!
組件的內容非常簡單,總共不到70行代碼,就不再貼了。先刪掉了js,生命周期,methods,watch刪的干干凈凈;又開始刪template,只剩下一個<p>111</p>;css沒有動,它還能出什么幺蛾子?但是還是報錯啊!后來同事猜測說就是css的問題:我們的彈窗使用了element UI,為了覆蓋它的樣式,有幾行代碼是這么寫的:

問題就出在這個deep上面!之前在網上看到有一種覆蓋element樣式的寫法:
- 父組件cssName+ /deep/+第三方庫需要更改的cssName
例如 .parentCssName /deep/ .libCssName{}
但是我沒有采用這種方式,而是把所有需要覆蓋的樣式寫在了el_cover.css這個文件中。這個組件不是我寫的,同事和我用的不是同一個方法。如果我們統一標准的話就不會出現這個問題了,但是反過來想想也就不會知道有這么一個坑了。扯遠了,把deep去掉,代碼放在el_cover.css中,再次npm run dev,項目啟動成功。
ps,附一下vue官網關於css作用域的講解:https://vue-loader-v14.vuejs.org/zh-cn/features/scoped-css.html
pps,后來發現css的層級較深時也會出現內存溢出這個問題。
這里只是發現了nuxt下運行項目時out of memory的一個原因,至於為什么會這樣以及是否還有其他操作也會導致內存溢出,如果你知道,不妨像我一樣分享出來啊~
