HBuilder+uniapp+uview项目打包遇到问题记录(打包后白屏)

本文解决了前端开发中常见的三个问题:自动生成图标按钮无响应、云端打包后软件显示白屏以及模拟器调试时出现未定义方法的警告。提供了详细的解决方案,包括确保图标格式正确、适配不同平台API差异及添加缺失的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题一:

问题描述:选择的图表,点击自动生成所有图标按钮并替换按钮,提示框一闪而过,没任何反应。

 问题原因及解决办法:

导入的图标必须是png格式,并且导入的图片不能是其他格式的图片手动修改成png的,最好转一下png

问题二:

问题描述:

云端打包之后,下载的软件打开页面为白屏,但是之前pc端调试正常,模拟器调试出现报错: reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught TypeError: Cannot read property 'createElement' of undefined

 

问题原因:

pc端和app有些地方不兼容的问题。使用了非H5端不支持的API 小程序和App的js运行在jscore下而不是浏览器里,没有浏览器专用的js对象,比如document、xmlhttp、cookie、window、location、navigator、localstorage、websql、indexdb、webgl等对象。

解决办法

使用条件编译,在上述提到的浏览器专用对象处添加,我这里是document影响,下面为示例。

// #ifdef H5
	instance.$mount(document.createElement('div'))
	document.body.appendChild(instance.$el)
	
// #endif

问题三:

问题描述:

模拟器调试出现下述问题

[Vue warn]: Property or method "toJSON" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.

问题原因:

属性或方法“toJSON”没有在实例上定义,而是在渲染时被引用。通过初始化该属性,确保该属性是被动的,无论是在data选项中,还是对于基于类的组件。

解决办法:

在对应文档的methods中添加空toJSON()方法

methods:{
	  toJSON(){},
  }

import App from './App' import store from './store'; import Vue from 'vue' import { registerRouterInterceptor } from './utils/router'; import './uni.promisify.adaptor' import uView from 'uview-ui' import http from '@/utils/http' Vue.use(uView) // 挂载到Vue原型 Vue.prototype.$http = http Vue.prototype.$store = store uni.$u.config.unit = 'rpx' Vue.config.productionTip = false Vue.prototype.$store = store; // 注册路由拦截器 // registerRouterInterceptor(); App.mpType = 'app' const app = new Vue({ store, ...App }) app.$mount() 这是main.js 的代码 import store from '@/store' import { baseURL } from './request.js' // 创建uView请求实例 const http = uni.$u.http // 请求拦截器 http.setConfig((config) => { config.baseURL = baseURL // 设置基础URL config.header['tenant-id'] = 0 return config }) http.interceptors.request.use( (config) => { console.log(config, "config") if (!config.url.includes('/app-api')) { // 如果URL不包含/app-api,添加前缀 config.url = '/app-api' + config.url; console.log("添加前缀后的URL:", config.url); } else { console.log("URL包含/app-api,不做处理"); } // 添加token到请求头 const token = store.state.token if (token) { config.header = { ...config.header, 'Authorization': `Bearer ${token}` } } return config }, (error) => { return Promise.reject(error) } ) // 响应拦截器 http.interceptors.response.use( (response) => { const { data, statusCode } = response if (statusCode === 200) { // 业务成功处理 return data } else if (statusCode === 401) { // token过期处理 store.dispatch('logout') uni.$u.toast('登录已过期,请重新登录') return Promise.reject('登录过期') } else { // 其他错误处理 uni.$u.toast(data.message || '请求失败') return Promise.reject(data) } }, (error) => { // 网络错误处理 uni.$u.toast('网络连接失败') return Promise.reject(error) } ) export default http 这是封装的请求的代码 import http from '@/utils/http' export default { // 密码登录接口 login(data) { return http.post('/member/auth/login', data) }, // 验证码登录接口 checkLogin(data) { return http.post('/member/auth/sms-login', data) } // // 获取用户信息 // getUserInfo() { // return http.get('/app-api/member/profile') // }, // // 更新用户信息 // updateUserInfo(data) { // return http.put('/app-api/member/update', data) // } }这个封装接口的代码,为什么会报app.js错误: TypeError: Cannot read property 'http' of undefined at Object.<anonymous> (http.js:7) at Object.<anonymous> (vendor.js:11628) at __webpack_require__ (bootstrap:91) at Object.<anonymous> (user.js:1) at __webpack_require__ (bootstrap:91) at Object.<anonymous> (user.js:1) at Object.<anonymous> (vendor.js:11141) at __webpack_require__ (bootstrap:91) at Object.<anonymous> (index.js:3) at __webpack_require__ (bootstrap:91)(env: Windows,mp,1.06.2503300; lib: 3.8.12) TypeError: Cannot read property 'http' of undefined at Object.<anonymous> (http.js:7) at Object.<anonymous> (vendor.js:11628) at __webpack_require__ (bootstrap:91) at Object.<anonymous> (user.js:1) at __webpack_require__ (bootstrap:91) at Object.<anonymous> (user.js:1) at Object.<anonymous> (vendor.js:11141) at __webpack_require__ (bootstrap:91) at Object.<anonymous> (index.js:3) at __webpack_require__ (bootstrap:91)(env: Windows,mp,1.06.2503300; lib: 3.8.12)这个错
最新发布
07-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值