# build error
import { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set,...
import { setupDevtoolsPlugin } from '@vue/devtools-api';
error during build:
RollupError: "hasInjectionContext" is not exported by "node_modules/vue-demi/lib/index.mjs", imported by "node_modules/pinia/dist/pinia.mjs".
在 pinia 中引用的 hasInjectionContext 在 vue-demi 插件中不存在。我想这可能是由于 Vue 版本和 Pinia 版本不匹配导致的。
随后我查看了 package.json 文件。
"pinia": "^2.0.17",
"vue": "3.2.37",
查看 Jenkins 打包服务器中的 lock 文件。
name: pinia
version: 2.1.0
这里锁定了 Vue 的版本,但是 Pinia 没有锁定。查看了 Pinia 的更新日志,发现 2.1.0 及以上版本需要引入 Vue 3.3 及以上版本。
解决办法
- 将 vue 升级到 3.3 及以上版本,将 pinia 升级到 2.1.0 及以上版本。Vue 3.3 引入了很多新的特性,特别是对泛型组件的支持。
- 如果无法升级到 Vue 3.3 及以上版本,可以锁定 Pinia 的版本为 2.0.36。由于某些原因,我们的项目无法升级 Vue,因此采用了这种方法。