uni-app icon indicating copy to clipboard operation
uni-app copied to clipboard

easycom功能无法兼容pnpm

Open JesseChain opened this issue 3 years ago • 3 comments

企业微信截图_16372270735948

复现代码

JesseChain avatar Nov 18 '21 09:11 JesseChain

收到,后续会进行排查

zhetengbiji avatar Nov 19 '21 02:11 zhetengbiji

@zhetengbiji 排查了下发现是下面的代码出了问题 QQ图片20211228214832 通过easyCom功能自动导入的组件的chunkName被写死成了requestPath和实际webpack解析到的resourcePath不一致导致编译后的文件路径错位了

目前想到两种解决方案

  • 想办法获取到当前loaderContext中resolve方法,将requestPath转化为resourcePath 但是resolve方法是异步的,需要将generateAutoComponentsCode函数改为异步函数,成本很高

  • 可以使用unplugin-vue-components包重构easyCom功能 我发现 虽然直接从node_modules中导入组件中也会有bug,但是只是因为一个很小的判断错误导致的,修复之后几乎完美 现在的easyCom功能实现方式很令人困惑,跟正常导入组件的方式有很大不同,完全不走webpack-uni-mp-loader/script-new 如果能在vue-loader编译之前实现自动导入,还可以复用webpack-uni-mp-loader/script-new中的逻辑

JesseChain avatar Dec 28 '21 14:12 JesseChain

@zhetengbiji 排查了下发现是下面的代码出了问题 QQ图片20211228214832 通过easyCom功能自动导入的组件的chunkName被写死成了requestPath和实际webpack解析到的resourcePath不一致导致编译后的文件路径错位了

目前想到两种解决方案

  • 想办法获取到当前loaderContext中resolve方法,将requestPath转化为resourcePath 但是resolve方法是异步的,需要将generateAutoComponentsCode函数改为异步函数,成本很高
  • 可以使用unplugin-vue-components包重构easyCom功能 我发现 虽然直接从node_modules中导入组件中也会有bug,但是只是因为一个很小的判断错误导致的,修复之后几乎完美 现在的easyCom功能实现方式很令人困惑,跟正常导入组件的方式有很大不同,完全不走webpack-uni-mp-loader/script-new 如果能在vue-loader编译之前实现自动导入,还可以复用webpack-uni-mp-loader/script-new中的逻辑

我也遇到这个问题了,能贴下代码第二种方法具体怎么处理吗?谢谢

ljxyaly avatar Sep 02 '22 10:09 ljxyaly

遇到同样的问题了,能解决一下嘛

GrapevineLin avatar May 10 '23 03:05 GrapevineLin