不是说 esm是 引用变量么, 为什么在小程序上同一个模块导出的是两个不同的对象,就因为使用的项目不同?这两个项目都依赖了另一个项目,于是各新建了一个实体?
而在h5端,两个node_modules中的三方类库项目引用同一个第三方类库中到处的内容,是共享对象的
看小程序源码里面创建了两个这个对象
let SocialuniPluginsModule$1 = class SocialuniPluginsModule2 {
constructor() {
__publicField(this, "_router", null);
__publicField(this, "_route", null);
__publicField(this, "uid", UUIDUtil.getUUID());
__publicField(this, "socialuniPlugins", []);
console.trace("创建了socialplus");
}
get route() {
return this._route;
}
setRoute(value) {
this._route = value;
}
get router() {
return this._router;
}
setRouter(value) {
this._router = value;
}
init() {
this.socialuniPlugins = [];
}
addPlugin(...socialuniPlugins) {
this.socialuniPlugins.push(...socialuniPlugins);
}
get plugins() {
return this.socialuniPlugins;
}
};
const socialuniPluginsModule$1 = reactive(new SocialuniPluginsModule$1());
class SocialuniPluginsModule {
constructor() {
this._router = null;
this._route = null;
this.uid = UUIDUtil.getUUID();
this.socialuniPlugins = [];
console.trace("创建了socialplus");
}
get route() {
return this._route;
}
setRoute(value) {
this._route = value;
}
get router() {
return this._router;
}
setRouter(value) {
this._router = value;
}
init() {
this.socialuniPlugins = [];
}
addPlugin(...socialuniPlugins) {
this.socialuniPlugins.push(...socialuniPlugins);
}
get plugins() {
return this.socialuniPlugins;
}
}
const socialuniPluginsModule = reactive(new SocialuniPluginsModule());
源码
编译后
1条答案
按热度按时间tgabmvqs1#
项目中引用了一个库,三方库中也引用了这个库,
程序中会存在两个版本 , 一个是node_modules中的对象,一个是程序中引用的对象
导致的
把程序中对这个库的引用删除,解决了问题, 但是感觉这是打包逻辑有问题
h5端就没有这个问题, node_modules中和项目中引用的同一个库,会使用同一个引用,而在微信小程序中会分别使用两个引用