Closed Bisstocuz closed 11 months ago
pinia是基于vue-demi
的。你可以参考example的设置
关于分析依赖这一点 没有一个很好的平衡点去判断具体应该依赖什么
pinia是基于
vue-demi
的。你可以参考example的设置
[vite-plugin-cdn] Cannot read properties of undefined (reading 'id')
file: D:/My Projects/MBDownload/frontend/node_modules/.pnpm/element-plus@2.3.6_vue@3.3.4/node_modules/element-plus/es/hooks/use-model-toggle/index.mjs
error during build:
TypeError: Cannot read properties of undefined (reading 'id')
at NodePath._getKey (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\path\family.js:243:25)
at NodePath.get (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\path\family.js:236:17)
at NodePath._getPattern (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\path\family.js:272:21)
at NodePath.get (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\path\family.js:238:17)
at traverseNode (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\vite-plugin-cdn2@0.9.0\node_modules\vite-plugin-cdn2\dist\chunk-WFIYNUVD.js:164:29)
at CodeGen.eraseDuplicatedVariableDeclaration (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\vite-plugin-cdn2@0.9.0\node_modules\vite-plugin-cdn2\dist\chunk-WFIYNUVD.js:191:7)
at Declaration (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\vite-plugin-cdn2@0.9.0\node_modules\vite-plugin-cdn2\dist\chunk-WFIYNUVD.js:245:16)
at NodePath._call (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\path\context.js:46:20)
at NodePath.call (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\path\context.js:36:17)
at NodePath.visit (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\path\context.js:82:31)
at TraversalContext.visitQueue (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\context.js:86:16)
at TraversalContext.visitMultiple (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\context.js:61:17)
at TraversalContext.visit (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\context.js:107:19)
at traverseNode (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\traverse-node.js:18:17)
at NodePath.visit (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\path\context.js:88:52)
at TraversalContext.visitQueue (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\context.js:86:16)
at TraversalContext.visitSingle (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\context.js:65:19)
at TraversalContext.visit (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\context.js:109:19)
at traverseNode (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\traverse-node.js:18:17)
at traverse (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\@babel+traverse@7.22.5\node_modules\@babel\traverse\lib\index.js:49:34)
at CodeGen.transform (D:\My Projects\MBDownload\frontend\node_modules\.pnpm\vite-plugin-cdn2@0.9.0\node_modules\vite-plugin-cdn2\dist\chunk-WFIYNUVD.js:198:20)
ELIFECYCLE Command failed with exit code 1.
那这个 element-plus
的报错是什么问题呢?
你只需要给modules设置上vue-demi
就行
你只需要给modules设置上
vue-demi
就行
🤣这个可以了,结果 ElementPlus 构建又出错了。
我等会看下。目前0.9.0版本存在一个build error 可能会导致这个问题
你这个只有报错看起来像是dialog组件的问题?还是你调用了element的 hook呢
我需要一个示例
我需要一个示例
有两个鬼畜的问题(全程使用 pnpm
,node
版本为最新 LTS):
element-plus
构建报错。dist
目录删掉,然后再构建,会报错说 dist/favicon.ico
不存在。关于element-plus
报错的问题这个情况我在本地进行了最小复现以及修复。
这是
unplugin-vue-component
的注入流程。他破坏了cdn
插件的解析我觉得我需要提供一个特别的方式去手动调整。
cdn
插件目前没法处理这个case导致了后续流程被破坏了。关于解析策略这个问题cjs
和esm
一直都存在。这个问题我无法保证作为库作者的行为。如果cdn
插件打算支持这个情况那么只能根据main
和module
获取上层目录的方式去解决这个情况了但是这个行为又不靠谱
目前的流程是这样的unplugin的自动导入element-plus写入了import { x } from 'element-plus/es'
这个行为显然是无法预期的。因为cdn的module option是根据element-plus
去判断是否需要替换。显然前者找不到发生了错误
目前的解决方式patch-package 然后给vite-plugin-cdn2
额外注入模块。dist/index.js
.如果你是"type:module"用户给dist/index.mjs
注入
await scanner.scanAllDependencies(); // 下一行添加
if(scanner.dependencies.has('element-plus')){
// 如果你是ssr 就把es改成lib
scanner.dependencies.set('element-plus/es',scanner.dependencies.get('element-plus'))
}
@Bisstocuz
@nonzzz
其实我并不需要将 ElementPlus
通过 CDN 引入,我将 element-plus
从 modules
中去掉的话,这种情况构建也会报错,是否有什么解决方案呢?使 modules
中没有 element-plus
也能成功构建。
那不行。 因为cdn
插件更像是一个external
+html inject
的集合体。element-plus
依赖于vue
。那么vue相关的东西都不能被外部化。否则打包器是无法正确识别的。根据你的配置来看目前只有axios能外部化了。
项目没有直接安装
vue-demi
,项目基础框架是vue
+vue-router
+pinia