解决 vue2.7使用 pnpm 和 pinia 2.x hasInjectionContext 报错 #3087
sweetwisdom
started this conversation in
Ideas
Replies: 1 comment
-
|
Because |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
看了很多帖子,都说和vue2.7 不兼容,需要降级到2.0.x,但还是没有效果,pinia 2.x的最后更新版本也支持2.7,使用yarn可以运行,使用pnpm就报错
环境说明
package.json
报错信息
报错关键字:
export 'hasInjectionContext' (imported as 'hasInjectionContext')报错信息:
问题分析
由于 vue-demi 被 Ignored build scripts(忽略了构建脚本),它无法执行安装后的 postinstall 脚本。
为什么这会导致报错?
vue-demi 是 Pinia 兼容 Vue 2 和 Vue 3 的核心桥梁。它在安装时需要运行一个脚本来检测你当前项目是 Vue 2 还是 Vue 3,并据此“切换”导出的 API。
因为 pnpm 默认禁用了未授权的脚本运行,vue-demi 没能成功切换。
结果它默认指向了 Vue 3 的导出路径,导致 Pinia 去调用 Vue 2.7 根本不存在的 hasInjectionContext,从而引发了你看到的错误。
解决办法
授权并重新构建
在终端运行以下命令:
空格选中
vue-demi再次执行
pnpm dev即可Beta Was this translation helpful? Give feedback.
All reactions