簡體   English   中英

錯誤:ENOENT:沒有這樣的文件或目錄,stat Laravel mix bug

[英]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)。 所以我做了什么:

  1. 刪除了存儲符號鏈接和php artisan storage:link
  2. 將 nodejs 版本從 18 降級到 14:
$ node -v
18.12.1
$ n 14.21.2
installed
$ node -v
14.21.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM