关于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

时间: 2024-11-02 13:46:23

关于Laravel中使用Laravel-mix打包资源文件的一个坑的相关文章

在.NET中读取嵌入和使用资源文件的方法

转http://www.jb51.net/article/84660.htm 本文分别介绍了使用GetManifestResourceStream读取嵌入资源,和使用. resx资源文件嵌入资源,希望对大家有所帮助. Dotnet中嵌入资源(位图.图标或光标等)有两种方式,一是直接把资源文件加入到项目,作为嵌入资源,在代码中通过Assembly的GetManifestResourceStream方法获取资源的Stream.另一种方法是在项目中加入. resx资源文件,在资源文件中添加资源,由Re

maven打包资源文件(转)

原文链接:http://blog.csdn.net/u012849872/article/details/51035938 maven工程标准目录结构: src    -main       –bin 脚本库       –java java源代码文件       –resources 资源库,会自动复制到classes目录里       –filters 资源过滤文件       –assembly 组件的描述配置(如何打包)       –config 配置文件       –webapp

Pyqt 打包资源文件

用打包工具将做好的Pyqt程序打包成exe后发现引用的资源图片都显示不了? 是否遇到了和我一样的问题呢.google之后找到了方法,一种方法是在程序中引用外部资源,另外一种方法是将资源文件转换为py文件,然后引用py.下面我们详细来实现后者方法实现的过程 一. 生成资源文件 要把资源文件转换为py文件首先要有资源文件,我们打开Qt Designer,添加资源文件 保存好资源文件后缀是以 .qrc  结尾的,用notepad++查看.qrc文件发现该文件其实为XML 1 <RCC> 2 <

解决 IDEA 中src下xml等资源文件无法读取的问题

该问题的实质是,idea对classpath的规定. 在eclipse中,把资源文件放在src文件夹下,是可以找到的: 但是在idea中,直接把资源文件放在src文件夹下,如果不进行设置,是不能被找到的. 下面说说几种解决方法,网上说的都很混乱,我这里做一个总结:推荐方法4 1.将所有资源文件放在resources文件夹下 这样做很方便,比较容易想到,但是层次性就很差了,比如mybatis的映射配置文件mapper.xml,本来需要放在特定的包里面,与dao层,service层等层次为同一个层级

Webpack 使用url-loader和file-loader打包资源文件

在js中不仅可以通过import引入js文件,还可以引入图片.视频等资源文件,这样webpack打包时就会把所引入的资源文件也一起打包进来 打包进来的文件会返回一个字符串:即文件的路径 要做到这一点,需要一个工具,file-loader,使用方法很简单那 1. 安装 npm install file-loader --save-dev 2. 配置 { test: /\.(png|jpg|jpeg|gif)$/, use: [ { loader: 'file-loader', options: {

pyinstall打包资源文件

相关代码 main.py import sys import os #生成资源文件目录访问路径 #说明: pyinstaller工具打包的可执行文件,运行时sys.frozen会被设置成True # 因此可以通过sys.frozen的值区分是开发环境还是打包后的生成环境 # # 打包后的生产环境,资源文件都放在sys._MEIPASS目录下 # 修改main.spec中的datas, # 如datas=[('res', 'res')],意思是当前目录下的res目录加入目标exe中,在运行时放在零

pyinstaller打包资源文件及包含eyed3模块时提示找不到libmagic处理

这两天用python写了个小工具,用到了eyed3,用pyinstaller打包时提示找不到libmagic 版本信息: python 3.6.5 pyInstaller 3.4 python-magic-bin 0.4.14 eyeD3 0.88 wxpython 4.0.3 eyeD3 在Windows下使用时,文件名带有中文时乱码,提示找不到文件,解决办法(magic.py 230行左右): if is_unicode: return filename.encode('utf-8') el

MFC新建工程中目录包含中文,资源文件打开失败

※尽量不适用中文,各种未知错误,嘿嘿 此方法临时解决问题,可以使程序运行,后续是否还有错误是未知数 需要修改3处位置: 1.资源文件中.rc 右键,点击“查看代码”,找到带中文的资源ID,把中文修改掉 2.资源头文件中Resource.h 找到带中文的资源ID,把中文修改掉 3.DialogEx派生类的cpp文件中.cpp 找到构造函数,将初始化列表中的中文改掉 3处修改的名字必须一致哈 原文地址:https://www.cnblogs.com/bCPTdtPtp/p/10776378.html

打包资源文件到程序

#include <stdio.h> #include <stdlib.h> void FileToArray(const char *srcfile, const char *dstfile) { FILE *file = fopen(srcfile, "rb"); if (file) { FILE *save = fopen(dstfile, "w"); fseek(file, 0, SEEK_END); unsigned int fil