解決VuePress中的”Error from chokidar : Error: EBUSY“問題
問題及背景
最近在現有Vue2項目中引入VuePress文檔工具,編寫基于ElementUI的組件文檔。結果出現了詭異的”Error from chokidar (D:\): Error: EBUSY: resource busy or locked, lstat 'D:\pagefile.sys'報錯。
從報錯信息看不出任何有幫助的提示,參考網上的方法刪除重裝node_modules,問題依舊。
初始代碼:
// enhanceApp.js import 'element-ui/lib/theme-chalk/index.css'; import ElementUI from 'element-ui';
//import { Button } from 'element-ui'; // 單獨引入同樣報錯
export default async ({ Vue }) => { Vue.use(ElementUI, {size: 'mini'}); }
報錯信息:
success [14:16:24] Build 59369a finished in 4897 ms! > VuePress dev server listening at http://localhost:8080/ Error from chokidar (D:\): Error: EBUSY: resource busy or locked, lstat 'D:\pagefile.sys'
問題排查
嘗試將文檔獨立為一個新項目,則沒有問題。于是考慮是依賴沖突問題,但具體是哪個依賴則不得而知。
于是只能排除法一個個組件測試。
// enhanceApp.js import Alert from 'element-ui/lib/alert.js'; import Aside from 'element-ui/lib/aside.js'; import Autocomplete from 'element-ui/lib/autocomplete.js'; import Avatar from 'element-ui/lib/avatar.js'; import Backtop from 'element-ui/lib/backtop.js'; //中間省略。。 import Backtop from 'element-ui/lib/upload.js';
最終發現在引入 “form-item.js”組件時問題出現,其它組件則沒有問題。
于是深入form-item代碼內部繼續排查,同時聯想之前看過的文章,確定了沖突的依賴“async-validator”。
/***/ 49: /***/ (function(module, exports) { module.exports = require("async-validator"); /***/ }),
從elementUI看到依賴版本為1.8.1
"dependencies": { "async-validator": "~1.8.1", //省略 }
在項目中將其指定到1.11即可,至此問題解決??梢杂淇斓赝暾胑lementui了。
// 項目package.json "dependencies": { "async-validator": "^1.11.5"", }
總結
排除法找到有問題的依賴為"async-validator",通過指定為高版本即可解決問題。但之前的報錯信息跟問題原因看起來簡直毫無關系,不得不提醒大家注意保持平常心,這非常重要。:)
浙公網安備 33010602011771號