uniapp开发项目——问题总结

前言

之前使用过uniapp开发微信小程序,但是没有遇到需要兼容H5页面的。因此在使用uniapp开发微信小程序和H5的过程中,遇到了好些问题。

1. button按钮存在黑色边框

使用button标签,在手机上查看存在黑色的边框,设置了border: none;也没有效果。

原因:uniapp的button按钮使用了伪元素实现边框

解决方法: 设置button标签的伪元素为display:none或者boder:none;

button:after{
boder:none;
}
button:after{
   boder:none;
}
button:after{ boder:none; }

2. 配置反向代理,处理跨域

微信小程序没有跨域问题,如果当前小程序还没有配置服务器域名出现无法请求接口,只需要在微信开发工具勾选不校验合法域名,就可以请求到了

在本地开发环境中,H5页面在浏览器中调试,会出现跨域问题。如果后端不处理,前端就需要配置反向代理,处理跨域

a. 在manifest.json的源码视图中,找到h5的配置位置,配置proxy代理

image.png

注: “pathRewrite”是必要的,告诉连接要使用代理

b.在请求接口中使用

// '/api'就是manifest.json文件配置的devServer中的proxy
uni.request({
url: '/api'+ '接口url',
...
})
// '/api'就是manifest.json文件配置的devServer中的proxy
uni.request({
    url: '/api'+ '接口url',
    ...
})
// '/api'就是manifest.json文件配置的devServer中的proxy uni.request({ url: '/api'+ '接口url', ... })

c. 配置完,需要重启项目

3. 使用uni.uploadFile()API,上传图片文件

在微信小程序使用该API上传图片没问题,但是在H5页面实现图片上传,后台始终不能获取到上传的文件。

一开始使用uni.chooseImage()API实现从本地相册选择图片或使用相机拍照,成功之后可以返回图片的本地文件路径列表(tempFilePaths)和图片的本地文件列表(tempFiles,每一项是一个 File 对象)

tempFilePaths 在微信小程序中得到临时路径图片,而在浏览器中得到 blob 路径图片。微信小程序使用uni.uploadFile()上传该临时路径图片,可以成功上传,但是H5无法成功(浏览器中的传值方式会显示为payload,不是文件流file)

image.png

f994e37fce7a5d62763f1c015b9553f.png

可能原因:

  1. 使用 uni.uploadFile() 上传 blob 文件给服务端,后端无法获取到后缀名,进而上传失败。

b. uni.uploadFile()上传的文件格式不正确

解决方法:

在H5中上传tempFiles文件,而不是tempFilePaths,并更改uni.uploadFile()上传的格式

H5

image.png

微信小程序

image.png

4. 打包H5

问题:打包出来,部署到线上,页面空白,控制台preview中展示please enable javascript tocontinue

原因:uniapp的打包配置存在问题

解决方法:

a. web配置不选择路由模式、运行的基础路径也不填写(一开始都写了)

image.png

b. “pathRewrite”设置为空(不知道为啥,可能是不需要配置代理了,网站和接口是同一域名)

"proxy" : {
"/api" : {
"target" : "xxx",
"changeOrigin" : true,
"secure" : true,
"pathRewrite" : {}
}
}
"proxy" : {
    "/api" : {
        "target" : "xxx",
        "changeOrigin" : true,
        "secure" : true,
        "pathRewrite" : {}
    }
}
"proxy" : { "/api" : { "target" : "xxx", "changeOrigin" : true, "secure" : true, "pathRewrite" : {} } }

注: 之前接口中的’/api’也需要取消

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYgTQYLi' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片