我是靠谱客的博主 闪闪机器猫,最近开发中收集的这篇文章主要介绍关于Laravel中使用Laravel-mix打包资源文件的一个坑,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  今天在尝试把写了一周的项目用laravel-mix中的 mix.version() 命令生成版本化文件时,遇到了一个报错,大概长这样:

fs.js:675
    return binding.read(fd, buffer, offset, length, postion);
                          ^

Error: EISDIR: illegal operation on a directory, read 
    at Object.fs.readSync (fs.js:675:18)
    at .....

  一开始还以为哪里写错了,前后检查了几遍无果,配合错误提示分段排查,发现只要这句代码:

mix.copy('resources/assets/js/lib/editor.md','public/lib/editor.md');

存在就会导致报错。

  有趣的是:

  1.前一句mix.copy还跑得好好的。

  2.版本化的代码压缩和生成mix-manifest.json都被正确地执行了,但在那句copy未被执行。

  3.如果不执行版本化 mix.version() ,那句代码就跑得毫无问题。

  按照文档的说法,mix.copy仅仅是把一处资源文件复制到另一处,怎么会和mix.version扯上关系呢。

  虽然手动复制也能解决问题,但就它这么特殊总是令人不爽。

  Google给出的答案也很迷,有人提出是version的过程与copy的过程同时进行了导致的问题【https://github.com/JeffreyWay/laravel-mix/issues/852】,建议 mix.then( ()=>{ ...COPY CODE ... }) 解决,然而我试了并没有什么卵用。 mix在执行结束后,then内再对mix进行的操作就已经无效了。

  随后又在文档中发现一句 “The mix.version() will automatically version any compiled JavaScript, Sass/Less, or combined files. ” 。emmmm,似乎copy过去的内容哪怕没在HTML中被以{{ mix()}}的方式引用,也会被mix.version()盯上呢。

  最后,我决定把editor.md目录下的全部内容挨个审批,结果令人意外,哪怕editor.md是个空目录,它TM也会报错。这倒提醒了我,于是我试着修改了一下文件名到 “editor-md” --- >通过了。

  经过测试,似乎只有mix.copy()的源文件目录中不能出现 “ . ”,更深入的研究大概要翻version()源码了。

转载于:https://www.cnblogs.com/roay/p/8290249.html

最后

以上就是闪闪机器猫为你收集整理的关于Laravel中使用Laravel-mix打包资源文件的一个坑的全部内容,希望文章能够帮你解决关于Laravel中使用Laravel-mix打包资源文件的一个坑所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部