报错内容:
[16:17:21] ERR! EEXIST: file already exists, mkdir '{project_path}\target\weapp\static\svg'
[16:17:21] ERR! compile Compile failed. Add "--log trace" to see more details
Done in 6.59s.
如何产生bug:
- 在.vue文件或者.wpy文件中已经有某个标签的src指向了一个静态文件目录A中的文件
- 在wepy.config.js中,static的数组list中依旧包含了这个文件目录A
- 将编译后的文件提前清理干净,保证在无任何上次生成文件的条件下运行build命令
目前暂时的解决方法:
- 将静态文件分为两个文件夹,一个文件夹用于存放vue/wpy文件中,src属性指向的文件,一个用于存放build时无法自动拷贝的文件(举例,src="{{srcUrl}}",那么srcUrl对应的文件就无法自动复制过去)。
- build两次,第一次时报错,第二次不删除前一次的编译结果,就不会报错。
- 将以下文件做修改:
{root}\node_modules\@wepy\cli\core\compile.js(line:171)
将
return fs.copy(target, dest);
变为同步拷贝
return fs.copySync(target, dest);
因为第三种方法只是解决问题,没有实际确认是不是从根源上更合理的解决问题,所以没有提出PR。勉强只能算是一个参考吧。
这个不是太影响开发,但是在做CI/CD的时候因为报错会导致的整个pipeline挂了。希望可以在下个版本中修复,谢谢。
1条答案
按热度按时间sqougxex1#
还原步骤
生成 standard project
添加 src/static/a.svg 文件
index.wpy 中添加
wepy.config.js 中添加 static: [ 'src/static' ]
wepy build
wepy build
并无任何报错~无法还原问题。
另外 fs.copy 也不应该报类似错误 ,看是否可以添加
--log trace
贴出完整报告。或者给个可还原问题的包方便定位问题