Closed xmsz-stu closed 1 month ago
npm create vite@latest vite-react-ts2407 -- --template react-ts
新建了一个 vite项目,然后 npm i @douyinfe/semi-ui@2.62.1
引入 makrdownRender 、button组件后构建,一切正常,没有复现上述错误。
先排查下影响因子?搞个能复现的 Stackblitz 链接给我们查一下。
https://stackblitz.com/edit/vitejs-vite-npe6az?file=src%2FApp.tsx
低版本打包工具不兼容 package.json 里的 import 和 export 字段就会有这个问题(这个是nodejs 规范 https://nodejs.org/api/packages.html#conditional-exports),webpack4 也会报这个,webpack5和 vite 不会。这是 mdxjs 的依赖的 vfile 里带进来的,我们作为下游的下游,不太好解决这个问题 @pointhalo
低版本打包工具不兼容 package.json 里的 import 和 export 字段就会有这个问题(这个是nodejs 规范 https://nodejs.org/api/packages.html#conditional-exports),webpack4 也会报这个,webpack5和 vite 不会。这是 mdxjs 的依赖的 vfile 里带进来的,我们作为下游的下游,不太好解决这个问题 @pointhalo
有没有什么我项目里能用的临时解决方案
你的构建工具的版本太低了。
https://stackblitz.com/edit/vitejs-vite-npe6az?file=src%2FApp.tsx
这个case里rollup 是4.19.0,新版实测是能正常处理的。
你的scaffold 是三年前的东西 https://www.npmjs.com/package/@alifd/scaffold-simple,建议升级你的版本,比如你这里用的ice,就用 ice 新建一个项目迁移过去,消灭技术债,我们已经尝试了最新版的ice是ok 的。如果迁移有成本,也可以用打包好的 umd 版本的 semi,来规避掉这个问题,代价是没有treeshaking。
你的scaffold 是三年前的东西 https://www.npmjs.com/package/@alifd/scaffold-simple,建议升级你的版本,比如你这里用的ice,就用 ice 新建一个项目迁移过去,消灭技术债,我们已经尝试了最新版的ice是ok 的。如果迁移有成本,也可以用打包好的 umd 版本的 semi,来规避掉这个问题,代价是没有treeshaking。
只能先用umd版本了 因为这个项目也是好几年的 改不动了
还有一直非常临时的解决方法
"pnpm": {
"overrides": {
"@mdx-js/mdx>vfile": "^4.2.1",
"remark-rehype>vfile": "^4.2.1",
"unified>vfile": "^4.2.1",
"mdast-util-to-hast>vfile": "^4.2.1"
}
}
可以正常构建,但是不确定使用相关组件的时候会有什么问题,毕竟锁了旧版本
Is there an existing issue for this?
Which Component
vfile
Semi Version
2.62.1
Current Behavior
构建的时候提示
vfile的链路
应该是markdown的组件依赖,原先依赖中的vfile@4.2.1正常 盲猜是vfile在某个版本的时候,只能使用esm
请问要如何解决?
Expected Behavior
No response
Steps To Reproduce
No response
ReproducibleCode
No response
Environment
Anything else?
No response