DouyinFE / semi-design

🚀A modern, comprehensive, flexible design system and React UI library. 🎨 Provide more than 3000+ Design Tokens, easy to build your design system. Make Semi Design to Any Design. 🧑🏻‍💻 Design to Code in one click
https://semi.design
Other
8.34k stars 703 forks source link

[BUG] Rollup failed to resolve import "#minpath" from #2365

Closed xmsz-stu closed 1 month ago

xmsz-stu commented 2 months ago

Is there an existing issue for this?

Which Component

vfile

Semi Version

2.62.1

Current Behavior

构建的时候提示

16:27:03 [vite]: Rollup failed to resolve import "#minpath" from "../../node_modules/.pnpm/vfile@6.0.2/node_modules/vfile/lib/index.js".
16:27:03 This is most likely unintended because it can break your application at runtime.
16:27:03 If you do want to externalize this module explicitly add it to
16:27:03 `build.rollupOptions.external`
16:27:03 Vite Failed to build.
16:27:03 ERR! [vite]: Rollup failed to resolve import "#minpath" from "../../node_modules/.pnpm/vfile@6.0.2/node_modules/vfile/lib/index.js".
16:27:03 This is most likely unintended because it can break your application at runtime.
16:27:03 If you do want to externalize this module explicitly add it to
16:27:03 `build.rollupOptions.external` 
16:27:03 Error: [vite]: Rollup failed to resolve import "#minpath" from "../../node_modules/.pnpm/vfile@6.0.2/node_modules/vfile/lib/index.js".
16:27:03 This is most likely unintended because it can break your application at runtime.
16:27:03 If you do want to externalize this module explicitly add it to
16:27:03 `build.rollupOptions.external`

vfile的链路

应该是markdown的组件依赖,原先依赖中的vfile@4.2.1正常 盲猜是vfile在某个版本的时候,只能使用esm

请问要如何解决?

Expected Behavior

No response

Steps To Reproduce

No response

ReproducibleCode

No response

Environment

- OS:
- browser:

Anything else?

No response

pointhalo commented 2 months ago

npm create vite@latest vite-react-ts2407 -- --template react-ts 新建了一个 vite项目,然后 npm i @douyinfe/semi-ui@2.62.1

引入 makrdownRender 、button组件后构建,一切正常,没有复现上述错误。

先排查下影响因子?搞个能复现的 Stackblitz 链接给我们查一下。

image

image

image

image

https://stackblitz.com/edit/vitejs-vite-npe6az?file=src%2FApp.tsx

xmsz-stu commented 2 months ago

Stackblitz 链接

https://stackblitz.com/~/github.com/xmsz/demo-202407242

npm i 
npm run build
DaiQiangReal commented 1 month ago

低版本打包工具不兼容 package.json 里的 import 和 export 字段就会有这个问题(这个是nodejs 规范 https://nodejs.org/api/packages.html#conditional-exports),webpack4 也会报这个,webpack5和 vite 不会。这是 mdxjs 的依赖的 vfile 里带进来的,我们作为下游的下游,不太好解决这个问题 @pointhalo

xmsz-stu commented 1 month ago

低版本打包工具不兼容 package.json 里的 import 和 export 字段就会有这个问题(这个是nodejs 规范 https://nodejs.org/api/packages.html#conditional-exports),webpack4 也会报这个,webpack5和 vite 不会。这是 mdxjs 的依赖的 vfile 里带进来的,我们作为下游的下游,不太好解决这个问题 @pointhalo

有没有什么我项目里能用的临时解决方案

pointhalo commented 1 month ago

image

image

你的构建工具的版本太低了。

pointhalo commented 1 month ago

image

https://stackblitz.com/edit/vitejs-vite-npe6az?file=src%2FApp.tsx

这个case里rollup 是4.19.0,新版实测是能正常处理的。

DaiQiangReal commented 1 month ago

你的scaffold 是三年前的东西 https://www.npmjs.com/package/@alifd/scaffold-simple,建议升级你的版本,比如你这里用的ice,就用 ice 新建一个项目迁移过去,消灭技术债,我们已经尝试了最新版的ice是ok 的。如果迁移有成本,也可以用打包好的 umd 版本的 semi,来规避掉这个问题,代价是没有treeshaking。

xmsz-stu commented 1 month ago

你的scaffold 是三年前的东西 https://www.npmjs.com/package/@alifd/scaffold-simple,建议升级你的版本,比如你这里用的ice,就用 ice 新建一个项目迁移过去,消灭技术债,我们已经尝试了最新版的ice是ok 的。如果迁移有成本,也可以用打包好的 umd 版本的 semi,来规避掉这个问题,代价是没有treeshaking。

只能先用umd版本了 因为这个项目也是好几年的 改不动了

xmsz-stu commented 1 month ago

还有一直非常临时的解决方法

 "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"
    }
  }

可以正常构建,但是不确定使用相关组件的时候会有什么问题,毕竟锁了旧版本