pinia报错does not provide an export named ‘hasInjectionContext

你们好,我是金金金。

场景

  • 我这里是uniapp+vue3编写的一个小程序项目 ,在集成 pinia过程当中遇到此问题,报错请求的模块 未提供 导出名hasInjectionContext(位于 pinia.mjs:6:10)

以下我项目当中vue和pinia的具体依赖版本

  • 这里插一条知识:package.json里面依赖包标识符~、^、以及不指定分别都代表什么含义,非常重要!!!

package.json里面依赖包标识符含义

  • ^2.0.27:指定的版本范围允许进行向后兼容的更新,包括小版本和次要版本的更新,但主版本号不变
    • 如果一个依赖项的版本为 ^2.0.27,那么在安装时,可以接受任何 2.x.x 版本的更新,但不接受 3.0.0 或更高版本的更新。例如,^2.0.27 允许安装 2.2.272.3.272.5.27等,但不允许安装 3.0.0
  • ~2.0.27:指定的版本范围允许进行小版本的更新,但保持主版本号不变
    • 如果一个依赖项的版本为 ~2.0.27,那么在安装时,可以接受任何 2.0.x 版本的更新,但不接受 2.1.0 或更高版本的更新。例如,~2.0.27 允许安装 2.0.372.0.5等,但不允许安装 2.1.0
  • 2.0.27:指定什么版本具体就是什么版本
    • 就是2.0.27

排查

  • 依赖安装的具体版本

由于我前面加了^所以版本在pnpm i的也就更新了~

  • vue:3.4.21
  • pinia:2.1.7

进入正题,从报错信息能看出来和pinia相关,我们来到更新日志看下是否是依赖兼容问题

  • 这里可以看到,pinia2.1.0要求vue版本 >= 3.3.0vue-demi 也需要 >= 0.14.5,我的vue版本是满足的,vue-demi(用于提供 Vue 2 兼容性的工具库)的版本也满足,vue3内置了这个工具库。
  • 我就纳闷了,依赖也能对上啊,为什么还是报错,在此期间又多次在网上寻找相关问题等解决方法,看到一篇帖子说是uniapp,我惊了。我先贴张图片,我也不清楚是不是这里影响的。
  • 随后我来到package.json,点击进去
  • 纳尼,这里依赖了vue 版本是3.2.47的,可能是被uniapp所依赖的版本影响到了,我们知道pinia``2.1.0以上需要vue版本是3.3.0及以上的,但是这个我们又是修改不了的,那么我们只有降低pinia的版本了,降到2.1.0以下供支持3.3.0以下vue版本即可。

造成error的原因

  • uniapp所依赖的vue版本 导致依赖不兼容所导致

解决

  • 降低pinia版本,我们指定安装具体的pinia版本为2.0.27

测试

  • 成功运行无报错

深究

  • 上面既然说了原因是uniapp的锅,我创了一个不是uniapp项目来验证
  • package.json
  • 我们来运行看下是否会报错,上面这个情况uniapp项目是已经报错了

成功运行。无报错!再次验证是uniapp所依赖的vue版本所导致。

总结

uniapp所依赖的vue版本 和 安装的pinia所需要的vue版本对应不上导致报错,由于我是uniapp项目 只能自降pinia版本,如果不是uniapp项目,vue版本和pinia版本对应的话,那么也不会出现这个问题。

  • 编写有误还请大佬指正,万分感谢。
相关推荐
web行路人5 分钟前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
番茄小酱0016 分钟前
Expo|ReactNative 中实现扫描二维码功能
javascript·react native·react.js
子非鱼92124 分钟前
【Ajax】跨域
javascript·ajax·cors·jsonp
超雄代码狂27 分钟前
ajax关于axios库的运用小案例
前端·javascript·ajax
长弓三石35 分钟前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
小马哥编程36 分钟前
【前端基础】CSS基础
前端·css
嚣张农民1 小时前
推荐3个实用的760°全景框架
前端·vue.js·程序员
周亚鑫1 小时前
vue3 pdf base64转成文件流打开
前端·javascript·pdf
落魄小二1 小时前
el-table 表格索引不展示问题
javascript·vue.js·elementui
y5236481 小时前
Javascript监控元素样式变化
开发语言·javascript·ecmascript