1. 问题背景
当我们接手一个新的 uni-app
项目(最头疼了x_x),可能会想到删掉 node_modules
和 pnpm-lock.yaml
后,执行 npm install
或 npm install
重新安装依赖包,然后执行 pnpm dev:mp-weixin
编译,但可能会遇到如下错误:
"hasInjectionContext" is not exported by "node_modules/.pnpm/pinia@2.1.7_vue@3.4.31/node_modules/vue-demi/lib/index.mjs", imported by "node_modules/.pnpm/pinia@2.1.7_vue@3.4.31/node_modules/pinia/dist/pinia.mjs".
at ../node_modules/.pnpm/pinia@2.1.7_vue@3.4.31/node_modules/pinia/dist/pinia.mjs:6:9
4: * @license MIT
5: */
6: import { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set,...
^
7: import { setupDevtoolsPlugin } from '@vue/devtools-api';
这一般是由于 pinia
和 vue
的版本不匹配或兼容性问题引起的。
其实这里不需要改 vue
的版本,修改 pinia
的版本就可以。"pinia": "2.1.0"
以后似乎就不支持 hasInjectionContext
,经反复测试,"pinia": "2.0.36"
是可支持的最新版本 ~
详见github链接→ pinia 2.0.36 (2023-05-08)
2. 解决办法
- 再次删掉
node_modules
和pnpm-lock.yaml
pinia
版本改为"pinia": "2.0.36"
- 重新执行
npm install
或pnpm install
安装依赖包,再次编译 - 提示
运行方式:打开 微信开发者工具, 导入 dist/dev/mp-weixin 运行。ready in 6494ms.
即构建成功