[youzan/vant][Bug Report] VantCli rc.3版使用pnpm作为包管理工具时报错

2024-04-01 851 views
7
重现链接

https://github.com/ahjsrhj/vant-cli-demo-pnpm

Vant Cli 版本

4.0.0-rc.3

描述一下你遇到的问题。

dev构建失败,提示没有md loader

> vant-cli dev

Pre-bundling dependencies:
  vue
  @vant/touch-emulator
  vue-router
  site-desktop-shared
  site-mobile-shared
  (...and 1 more)
(this will be run only when your dependencies or config have changed)
 > node_modules/.pnpm/@vant+cli@4.0.0-rc.3_vue@3.2.22/node_modules/@vant/cli/dist/site-desktop-shared.js:3:32: error: No loader is configured for ".md" files: src/demo-button/README.md
重现步骤

通过yarn create vant-cli-app创建了一个初始项目, 将其中vant-cli版本号升级到4.0.0-rc.3版, 之后运行pnpm install。 完成后运行npm run dev报错

回答

9

我的工程开始是npm升级到4.0.0-rc.3没有问题,改成pnpm管理后出现了这个问题

4

我也遇到了

6

请问这个bug有处理吗? image

6

我也遇到这个问题了

4

暂时没找到问题原因,感兴趣的同学可以帮忙排查下

8

@chenjiahan 我跟踪下vite代码,发现把这个site-desktop-shared,site-mobile-shared两个文件排除预构建,在vant.config.mjs中的build.configureVite加入下面的配置,可以解决这个问题 configureVite: (config) => { config.optimizeDeps = { exclude: ['site-desktop-shared', 'site-mobile-shared'] }; return config; }

我这边起两个个工程做对比,一个直接引用官方的仓库,一个是把官方的@vant/cli放到了本地工程的packages下面,发现vite在site-desktop-shared,site-mobile-shared这个两个文件预构建判断的不一致

@vant/cli 在本地 企业微信截图_16401478761051

@vant/cli 不在本地 企业微信截图_16401479046122

明显能够看出resolved解析出来的地址不一致,再看vite代码 企业微信截图_1640147986260

在esbuildScanPlugin这个方法中,可以看到当resolved的路径包含node_modules,会放到depImports,这个depImports我理解就是预构建的所有文件路径,site-desktop-shared,site-mobile-shared这个包含md的文件就会预构建,esbuild不认识md,所以就报错了

3

我来

7

@zhoucan38 看起来就是这个原因~ 分析的很详细?

@l-zoy ?

5

感谢分析,按照你提供的方案解决了。

1

已发布 @vant/cli 4.0.0-rc.6 修复版本,感谢 @l-zoy 帮忙修复~