esm和cmj混用报错分析

elpis DSL领域模型开发时,引入pinia处理模版数据时报错

代码

menu.js

js 复制代码
const { defineStore } = require('pinia') ; 
import { ref } from 'vue';
export const useMenuStore = defineStore('menu',()=>{const menuList = ref([])})

business.js

js 复制代码
import {useMenuStore} from './menu.js' 
const menuStore = useMenuStore()
报错信息:

getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"?

报错提示为useMenuStoreapp.use(pinia)之前运行了

问题分析:getActivePinia() 为检查当前是否存在活跃实例。webpack打包正常,node环境运行正常,浏览器访问报错。说明是运行时问题,boot.js中有app.use(pinia)实例化。最终定位menu.js 文件 cmj 和esm混用导致

问题解析:

cmj和esm加载时机

CommonJS: 同步加载,运行时确认依赖。

ESM: 异步加载,编译时编译确认依赖。

总结:

在webpack 编译时 定义好了useMenuStore ,但是没有 执行const { defineStore } = require('pinia') ; 。在运行时才执行const { defineStore } = require('pinia') ; 但是useMenuStore 早已经定义好,而此时business.js已经提前调用了useMenuStore(),导致Pinia实例未激活。

解决方案

const { defineStore } = require('pinia') ; 替换为import { defineStore } from 'pinia';

相关推荐
Jing_Rainbow13 小时前
【React-6/Lesson89(2025-12-27)】React Context 详解:跨层级组件通信的最佳实践📚
前端·react.js·前端框架
gustt13 小时前
构建全栈AI应用:集成Ollama开源大模型
前端·后端·ollama
如果你好13 小时前
UniApp 路由导航守卫
前端·微信小程序
im_AMBER13 小时前
告别“玄学”UI:从“删代码碰运气”到“控制 BFC 结界”
前端·css
bjzhang7513 小时前
使用 HTML + JavaScript 实现文件树
javascript·html·文件树
千寻girling13 小时前
《 MongoDB 教程 》—— 不可多得的 MongoDB
前端·后端·面试
攀登的牵牛花13 小时前
前端向架构突围系列 - 状态数据设计 [8 - 3]:服务端状态与客户端状态的架构分离
前端
掘金安东尼13 小时前
⏰前端周刊第 452 期(2026年2月2日-2月8日)
前端·javascript·github
古茗前端团队13 小时前
业务方上压力了,前端仔速通RGB转CMYK
前端
ArkPppp13 小时前
NestJS全栈实战笔记:优雅处理 Entity 与 DTO 的映射与字段过滤
javascript·nestjs