收藏
回答

js被微信开发者工具压缩后webpack获取global对象错误

问题模块 框架类型 问题类型 操作系统 工具版本
开发者工具 小程序 Bug Windows 1.02.1808101

RT


微信小程序的Function构造函数会返回固定的对象,目的是防止动态执行代码。在使用webpack打包的应用程序中,webpack/buildin/global.js模块的代码如下:


var g;
g = function() {
    return this
}();
try {
    g = g || Function("return this")() || (1, eval)("this")
catch (e) {
    if (typeof window === "object") g = window
}
module.exports = g


经过微信开发者工具压缩后,闭包中的this为undefined,于是会判断Function("return this")这步,然而因为上文提到的Function构造函数的问题,不会报错,返回的也不是undefined或null,于是global.js会误将这个返回对象当做window使用。此时如果使用了npm中的reflect-metadata包就会报错,因为reflect-metadata会优先使用global.js提供的对象。请尽快修复Function的问题,比如如果不希望使用Function构造函数,则抛出异常,或者什么也不返回


最后一次编辑于  2018-08-23  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • 晨
    2018-08-23

    基础库版本是?这里已经做过了兼容的

    2018-08-23
    赞同
    回复 1
    • Raykid
      Raykid
      2018-08-23

      没有用小程序生成工程,使用EgretWing 5.2.7打包出来的项目

      2018-08-23
      赞同
      回复