资讯专栏INFORMATION COLUMN

微信小程序require 引用 BASE64.JS 失败问题的分析解决

airborne007 / 1481人阅读

摘要:问题有朋友问微信小程序文件时,会失败分析事实上,微信小程序很多模块都有不兼容现象。。。,被微信小程序初始化时,指针为空,处理避开这类访问。

问题

有朋友问, 微信小程序require ("base64.js")文件时,会失败,,,

分析

事实上,微信小程序require很多JS模块都有不兼容现象。。。先从base64.js这个模块入手吧。
调试出错点:

(function(global) {
    "use strict";
    // existing version for noConflict()
    var _Base64 = global.Base64;  // 这句出错了...变量global的值是传入的this指针值,this指针为空了.
    var version = "2.1.9";
    // if node.js, we use Buffer
    var buffer;

调试了一下,主要现象
base64.js 代码里面假定了this指定非空。微信小程序require调入进来后,this指针为空,就会抛出异常。

对于微信小程序模块化的机制与require,,参见本人写的另一篇文字:关于微信小程序require机制的浅析

处理

知道这个修改就较容易了:
两处改动:

一 避免global为空指针

代码头部几行
(function(global) {
    "use strict";
    // existing version for noConflict()
    var _Base64 = global.Base64;
    var version = "2.1.9";

添加两行改为

(function(global) {
    "use strict";
    // existing version for noConflict()
    var _Base64 = global.Base64;
    var version = "2.1.9";
    if (!global)
        global = {}

二 添加module.exports

文件尾部几行
    }
    // that"s it!
    if (global["Meteor"]) {
        Base64 = global.Base64; // for normal export in Meteor.js
    }
 })(this);

添加一行

    }
    // that"s it!
    if (global["Meteor"]) {
        Base64 = global.Base64; // for normal export in Meteor.js
    }
    module.exports = global.Base64;
})(this);

然后在微信小程序里面调用测试:

    var base64 = require("../../utils/base64.js");
    ...
    var srcstr = "不要问我从哪里来";
    var base64str = base64.encode(srcstr);
    console.log(base64str);
    
输出: 5LiN6KaB6Zeu5oiR5LuO5ZOq6YeM5p2l
总结

类似兼容性处理方案:

1,因为目前微信小程序require机制,,并不容易自定义一个require函数去代替(内存中模块列表对象在闭包之中,不易访问),所以通常做法是修改被加载的js模块。

2,被微信小程序require初始化时,this指针为空,处理避开这类访问。

3,js模块中,尽可能按module.exports = ... 方式导出对象.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/81033.html

相关文章

  • 信小程序中图片上传阿里云Oss

    摘要:微信小程序图片上传阿里云服务器也折腾了蛮久才解决的,所以特意去记录一下。上传失败第四步源码在这里如果觉得这面文章对你有帮助的话,可给我点个这里,谢谢最后,希望这篇文章对你有所帮助,真真确确是可以在微信小程序中上传图片到阿里云的。 本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发。最近工作遇到一个小问题。 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意...

    Yang_River 评论0 收藏0
  • 信小程序中图片上传阿里云Oss

    摘要:微信小程序图片上传阿里云服务器也折腾了蛮久才解决的,所以特意去记录一下。上传失败第四步源码在这里如果觉得这面文章对你有帮助的话,可给我点个这里,谢谢最后,希望这篇文章对你有所帮助,真真确确是可以在微信小程序中上传图片到阿里云的。 本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发。最近工作遇到一个小问题。 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意...

    netmou 评论0 收藏0
  • 信小程序中图片上传阿里云Oss

    摘要:微信小程序图片上传阿里云服务器也折腾了蛮久才解决的,所以特意去记录一下。上传失败第四步源码在这里如果觉得这面文章对你有帮助的话,可给我点个这里,谢谢最后,希望这篇文章对你有所帮助,真真确确是可以在微信小程序中上传图片到阿里云的。 本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发。最近工作遇到一个小问题。 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意...

    silvertheo 评论0 收藏0
  • 信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)

    摘要:文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号好好学,获取优质学习资源。一登录流程图二小程序客户端获取用户信息非必填默认为请求服务端的登录接口临时登录凭证用户非敏感信息签名用户敏感信息解密算法的向量调用服务端登录接口 文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、登录流程图 showImg(htt...

    QiShare 评论0 收藏0

发表评论

0条评论

airborne007

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<