Error: ENOENT: no such file or directory, stat Laravel mix bug

Error: ENOENT: no such file or directory, stat Laravel mix bug

我有一个包含样式表和脚本文件的分层文件夹结构。我需要在输出文件夹中保持相同的结构。对于所有的脚本和样式,我得到一个路径数组,转换它们并将它们混合。

问题是混合接受我的路径但没有创建所需的结构。以前我手动做了路径数组,现在我没有得到正确的路径。没有编译器错误。我仍然使用 mix.js(str, str2)mix.less(str, str2)

我收到的路径和我手动写的差不多

My config

但是如果我启动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");
};