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版本对应的话,那么也不会出现这个问题。

  • 编写有误还请大佬指正,万分感谢。
相关推荐
Cachel wood14 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
学代码的小前端15 分钟前
0基础学前端-----CSS DAY9
前端·css
joan_8519 分钟前
layui表格templet图片渲染--模板字符串和字符串拼接
前端·javascript·layui
还是大剑师兰特42 分钟前
什么是尾调用,使用尾调用有什么好处?
javascript·大剑师·尾调用
m0_748236111 小时前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust
Watermelo6171 小时前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
m0_748248941 小时前
HTML5系列(11)-- Web 无障碍开发指南
前端·html·html5
m0_748235611 小时前
从零开始学前端之HTML(三)
前端·html
一个处女座的程序猿O(∩_∩)O3 小时前
小型 Vue 项目,该不该用 Pinia 、Vuex呢?
前端·javascript·vue.js
hackeroink6 小时前
【2024版】最新推荐好用的XSS漏洞扫描利用工具_xss扫描工具
前端·xss