[英]Error: ENOENT: no such file or directory, stat Laravel mix bug
我有一個包含樣式表和腳本文件的分層文件夾結構。 我需要在輸出文件夾中保持相同的結構。 對於所有腳本和樣式,我得到一組路徑,轉換它們並將它們混合。
問題是混合接受了我的路徑但沒有創建所需的結構。 以前我手動做了路徑數組,現在我沒有得到正確的路徑。 沒有編譯器錯誤。 我仍然使用mix.js(str, str2)
和mix.less(str, str2)
我收到的路徑和我手動寫的類似
但是如果我啟動 nodejs 調試過程,那么我會看到
我的文件夾結構
我的js路徑數組
Less array 和js一樣
我仍然沒有得到我的文件,但調試錯誤消失了
let compileJS = (str, str2) => { console.log(str,str2) mix.js(str, str2); }; glob("./components/**/*.js", (err, files) => { files.map((p) => { pathsJS.push({ in: p, out: p.replace("./components/", "./dist/views/"), }); }); // console.log(pathsJS); pathsJS.map((p) => { compileJS(p.in, p.out); }); });
問題是默認情況下所有庫都將路徑發布作為異步方法。 Mix 同步工作。 我安裝了一個更快版本的插件,同步輸出路徑並將混合函數放在同一個函數中。 因此,代碼立即執行。
const glob = require("fast-glob"); let compile = () => { function getFilesJS(baseSrc) { return glob.sync("./components/**/*.js", { onlyFiles: true, }); } let filesjs = getFilesJS(); filesjs.map((p) => { pathsJS.push({ in: p, out: p.replace("./components/", "./dist/views/"), }); }); pathsJS.map((p) => { mix.js(p.in, p.out); }); function getFilesLESS() { return glob.sync("./components/**/*.less", { onlyFiles: true, }); } let filesless = getFilesLESS(); filesless.map((p) => { pathsLess.push({ in: p, out: p.replace("./components/", "./dist/views/"), }); }); pathsLess.map((p) => { mix.less(p.in, p.out.replace("style.less", "")); }); mix.less("./src/less/styles.less", "./dist/template_styles.css"); mix.js("./src/js/script.js", "./dist/script.js"); };
在我的例子中,有兩個 nodejs 錯誤和損壞的存儲符號鏈接(將項目文件夾移動到其他地方后)(laravel 8)。 所以我做了什么:
php artisan storage:link
$ node -v
18.12.1
$ n 14.21.2
installed
$ node -v
14.21.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.