uni-app 使用全局或局部mixins,编译器发布后的小程序拿不到mixins里的data,直接运行却可拿到,这是什么情况
uni-app 使用全局或局部mixins,编译器发布后的小程序拿不到mixins里的data,直接运行却可拿到,这是什么情况
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | Windows10 2004 | HBuilderX |
产品分类:uniapp/小程序/微信
### 示例代码:
```javascript
export default {
network: {
IS_DEBUG: process.env.NODE_ENV === 'development', //是否开发环境
RELEASE_URL: 'http://120.78.189.16', // 生产环境地址
DEBUG_URL: 'http://120.78.189.16', // 测试环境地址
REQUEST_TIMEOUT: 60000, // 请求超时时间
}
}
import baseConfig from "./config.js"
export default {
install(Vue) {
Vue.mixin({
data() {
return {
BASE_URL: baseConfig.network.IS_DEBUG ? baseConfig.network.DEBUG_URL : baseConfig.network
.BASE_URL
}
}
})
}
}
import Vue from 'vue'
import App from './App'
import globalMixin from './common/js/globalMixin.js'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
// 混入 全局mixin
Vue.use(globalMixin)
操作步骤:
点击菜单栏的【发行】->【小程序-微信】编译出来的小程序,无法取到mixins混入的data数据
直接运行到小程序模拟器的就可以取到mixins混入的data数据
预期结果:
点击菜单栏的【发行】->【小程序-微信】编译出来的小程序,也能取到mixins混入的data数据
实际结果:
发行的小程序无法取到mixins混入的data数据
运行的小程序无法取到mixins混入的data数据
bug描述:
uniapp 使用全局或者局部mixins,编译器发布后的小程序使用this.BASE_URL
拿不到mixins里面的data,直接运行的小程序使用this.BASE_URL
就可以拿到mixins里面的data,这是什么情况
更多关于uni-app 使用全局或局部mixins,编译器发布后的小程序拿不到mixins里的data,直接运行却可拿到,这是什么情况的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是我的锅,一个字母写错了
更多关于uni-app 使用全局或局部mixins,编译器发布后的小程序拿不到mixins里的data,直接运行却可拿到,这是什么情况的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个在uni-app开发中常见的问题,通常与编译优化和mixin执行时机有关。
在开发环境下,uni-app编译器不会进行深度优化,mixin能够正常注入到组件实例中。但在生产环境构建时,编译器会启用tree-shaking等优化机制,可能导致mixin中的data属性被错误地移除。
从你的代码来看,问题可能出现在几个地方:
- mixin注册时机问题:你在创建Vue实例后才注册全局mixin,这可能导致部分组件无法正确接收到mixin。应该将
Vue.use(globalMixin)
移到创建Vue实例之前:
import Vue from 'vue'
import App from './App'
import globalMixin from './common/js/globalMixin.js'
Vue.config.productionTip = false
// 先注册mixin
Vue.use(globalMixin)
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()