编译时定义在wepy.config.js中static对象中的path报错

68bkxrlz  于 2022-10-22  发布在  其他
关注(0)|答案(1)|浏览(151)

报错内容:
[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:

  1. 在.vue文件或者.wpy文件中已经有某个标签的src指向了一个静态文件目录A中的文件
  2. 在wepy.config.js中,static的数组list中依旧包含了这个文件目录A
  3. 将编译后的文件提前清理干净,保证在无任何上次生成文件的条件下运行build命令

目前暂时的解决方法:

  1. 将静态文件分为两个文件夹,一个文件夹用于存放vue/wpy文件中,src属性指向的文件,一个用于存放build时无法自动拷贝的文件(举例,src="{{srcUrl}}",那么srcUrl对应的文件就无法自动复制过去)。
  2. build两次,第一次时报错,第二次不删除前一次的编译结果,就不会报错。
  3. 将以下文件做修改:
    {root}\node_modules\@wepy\cli\core\compile.js(line:171)
return fs.copy(target, dest);

变为同步拷贝

return fs.copySync(target, dest);

因为第三种方法只是解决问题,没有实际确认是不是从根源上更合理的解决问题,所以没有提出PR。勉强只能算是一个参考吧。

这个不是太影响开发,但是在做CI/CD的时候因为报错会导致的整个pipeline挂了。希望可以在下个版本中修复,谢谢。

sqougxex

sqougxex1#

还原步骤

  1. 生成 standard project

  2. 添加 src/static/a.svg 文件

  3. index.wpy 中添加

  4. wepy.config.js 中添加 static: [ 'src/static' ]

  5. wepy build

  6. wepy build

并无任何报错~无法还原问题。

另外 fs.copy 也不应该报类似错误 ,看是否可以添加 --log trace 贴出完整报告。或者给个可还原问题的包方便定位问题

相关问题