问题
在使用uniapp时,有pinia的需求,但是是vue3的setup语法糖写法,在安装pinia时出现以下错误:
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: uni-preset-vue@0.0.0
npm ERR! Found: vue@3.4.21
npm ERR! node_modules/vue
npm ERR! peer vue@“^3.2.25” from @vitejs/plugin-vue@5.0.5
npm ERR! node_modules/@vitejs/plugin-vue
npm ERR! @vitejs/plugin-vue@“^5.0.4” from @dcloudio/uni-app-vite@3.0.0-4010520240507001
npm ERR! node_modules/@dcloudio/uni-app-vite
npm ERR! @dcloudio/uni-app-vite@“3.0.0-4010520240507001” from @dcloudio/uni-app-plus@3.0.0-4010520240507001
npm ERR! node_modules/@dcloudio/uni-app-plus
npm ERR! @dcloudio/uni-app-plus@“3.0.0-4010520240507001” from the root project
npm ERR! @vitejs/plugin-vue@“^5.0.4” from @dcloudio/vite-plugin-uni@3.0.0-4010520240507001
npm ERR! node_modules/@dcloudio/vite-plugin-uni
npm ERR! dev @dcloudio/vite-plugin-uni@“3.0.0-4010520240507001” from the root project
npm ERR! peer vue@“^3.0.0” from @vitejs/plugin-vue-jsx@3.1.0
npm ERR! node_modules/@vitejs/plugin-vue-jsx
npm ERR! @vitejs/plugin-vue-jsx@“^3.1.0” from @dcloudio/vite-plugin-uni@3.0.0-4010520240507001
npm ERR! node_modules/@dcloudio/vite-plugin-uni
npm ERR! dev @dcloudio/vite-plugin-uni@“3.0.0-4010520240507001” from the root project
npm ERR! 4 more (@vue/server-renderer, vue-i18n, vue-router, the root project)
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! pinia@“2.1.6” from the root project
npm ERR!
npm ERR! Conflicting peer dependency: vue@3.4.38
npm ERR! node_modules/vue
npm ERR! peer vue@“>= 2.5 < 2.7” from @vue/composition-api@1.7.2
npm ERR! node_modules/@vue/composition-api
npm ERR! peerOptional @vue/composition-api@“^1.4.0” from pinia@2.1.6
npm ERR! node_modules/pinia
npm ERR! pinia@“2.1.6” from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
原因分析
pinia用了peerDependency配置了@vue/composition-api,这是为了兼容了vue2的选项式语法来设置的,npm没有识别,还是会检测它的版本与当前版本不符合。
解决方案
第一种:忽略上游依赖
npm install pinia --legacy-peer-deps
第二种:强制安装
npm install pinia --force
第三种:使用pnpm
pnpm install pinia