x***@qq.com
x***@qq.com
  • 发布:2019-06-04 10:01
  • 更新:2020-04-25 11:08
  • 阅读:6322

uni-app打包运行到安卓端后Mockjs失效

分类:HBuilderX

详细问题描述

不使用任何框架,只使用vue集成mockjs,在浏览器及app(安卓,ios)测试接口功能都正常。将MockJs移植到uni-app项目(使用官网新闻模板创建)中后,在浏览器模拟环境中正常(hbuilderx >>运行>>运行到浏览器 >>chrome),但是 通过hbuilderX运行到“手机或模拟器”,或通过HbuilderX云打包到安卓和ios就失效报错。

[内容]

重现步骤

[步骤]
1、下载附件源码。
2、解压,并导入项目到HbulderX,因为使用mockjs。所以先在项目根目录运行 命令: npm install mockjs --save 安装mockjs。
3、通过hbuilderX 的菜单“运行” 》》 运行到手机或模拟器,等app安装到安卓手机并启动。
4、在app的主界面,点击下方的“mock测试” 路由到 mock数据测试界面.
5、在mock数据测试界面,点击 “拉取数据”。

[结果]

发生错误:{"line":17788,"column":40,"sourceURL":"(global function)"}

[期望]
拦截请求地址,并获取service中的mock数据。(即效果同hbuilderx >>运行>>运行到浏览器 >>chrome 操作执行结果)

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[IDE版本号] HBuilderX 版本:1.9.9.20190522

[windows版本号] windows7 旗舰版 Service Pack 1

uni-app运行环境说明

[运行端是h5] uni-app 以h5方式功能正常。

[运行端版本号] Google Chrome 版本:72.0.3626.109(正式版本)(64位)

[项目以HBuilderX创建,且使用官方新闻模板] HBuilderX 版本:1.9.9.20190522

[编译模式] 自定义组件模式。

App运行环境说明

[Android版本号]6.0.1

[iOS版本号] 否

[手机型号] SM919

[模拟器型号] 直接通过hbuilderX 运行到手机(安卓)

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]

2019-06-04 10:01 负责人:无 分享
已邀请:

最佳回复

DCloud_UNI_GSQ

DCloud_UNI_GSQ

查看了你使用的Mockjs的源码(https://github.com/nuysoft/Mock/blob/refactoring/src/mock/xhr/xhr.js),Mockjs是通过重写window.XMLHttpRequest实现的拦截和伪造数据,在uni-app的非H5端是没有XMLHttpRequest对象的,不能用此种方式来实现拦截。

帮你百度找了另一个,你试试:https://github.com/webx32/WxMock

  • 5***@qq.com

    用了上面说的这个url里的mock,

    h5可以,app不行


    var Mock = require("./static/lib/mock");


    Mock.mock(/deleteAll/,{

    "code":200,

    "message":"删除成功",

    "success": true

    })

    2019-06-12 04:46

  • 半晴雨滴

    回复 DCloud_UNI_GSQ: 替换了还是不行,H5端可以,App上不行。报:request:fail invalid url "/about/list"

    2019-06-25 14:25

  • 半晴雨滴

    回复 DCloud_UNI_GSQ: 相关源码:https://github.com/jsonwu5/test-uniapp-mock

    2019-06-25 14:36

  • Alcantara

    不错,可以用

    2019-09-03 13:33

  • jtshushu

    您好 你们怎么了吗

    2020-04-27 09:56

DCloud_App_Array

DCloud_App_Array

uni-app不存在window和document,没有标准的ajax,有可能无法支持mockjs,可以尝试使用5+APP项目

  • x***@qq.com (作者)

    "app-plus": {

    "usingComponents":true //是否启用自定义组件模式,为true表示新的自定义组件模式 ,否则为template模板模式

    }

    此参数不管设置成true还是false。(自定义组件模式或非自定义组件模式) 在 运行到 浏览器(运行>>运行到浏览器>> chrome)都是正常的。但是,通过HbulderX 打包到 安卓手机(或云打包再下载安装)上,功能直接就报错。应该是HbuilderX 打包过程中的一些处理导致的。


    备注:同样的功能,在纯vue+mockjs 项目,使用cordova 打包到安卓是正常的。所以,肯定是Hbuilder X 打包uni-app 为安卓平台上的安装包过程,做过什么处理导致的。因为不知道你们具体的打包原理,所以麻烦看一下具体问题,项目源码头已经提交,谢谢。

    2019-06-04 20:01

  • jtshushu

    回复 x***@qq.com: 您好 您已经解决了 MOckjs问题吗

    2020-04-27 09:43

d***@foxmail.com

d***@foxmail.com

uniapp打包APP使用的跟小程序一样的机制没有window和document的

jtshushu

jtshushu - 擅长:PHP-Thinkphp Python MUI UniApp Vuejs Bootstrap Jq Logo设计 广告设计 网页设计 有项目上需要联系我微信号:jtshushu66

您好 楼主解决了吗MOckjs

该问题目前已经被锁定, 无法添加新回复