使用 Vue3 + Pinia + PNPM + Vite 开发一个前端项目时,运行preview
,报错:
pinia Cannot read properties of undefined (reading '_s')
报错的代码是压缩后的:
function we(e, t, n) {
let s, c;
const u = typeof t == "function";
typeof e == "string" ? ((s = e), (c = u ? n : t)) : ((c = e), (s = e.id));
function a(o, h) {
const f = ie();
return (
(o = o || (f ? ue(be, null) : null)),
o && F(o),
(o = H),
o._s.has(s) || (u ? V(s, t, c, o) : ve(s, c, o)), // 报错位置
o._s.get(s)
);
}
return (a.$id = s), a;
}
大意像是读取一个 store的名称失败导致。而我确认这个 store 已经被注册(defineStore)了。
翻阅 pinia 源码,定位到位置:https://github.com/vuejs/pinia/blob/5c94d26e11f8d2ed0e01d5a615f8e014d799b4a0/packages/pinia/src/store.ts#L895-L966 ,不过依然不明确问题原因。
突然灵感乍现,有新发现,我这个工程是 pnpm workspace, 两个包都依赖了 pinia,但版本不一致了。统一版本后再 build,问题解决。
那么,怎么保证不同的包的相同依赖版本一致呢?pnpm 给出了方案:https://pnpm.io/package_json#pnpmoverrides
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理