收藏
回答

真机报错:Error during evaluating file "app.js",是什么原因?

我小程序代码1个月都没用动过了。但是今天运行之后,模拟器没问题。iOS和Android都报错。错误如下:

后续补充,以下是我的解决办法:

# 问题记录
## 问题记录-01
- 问题:真机运行,出现:
```log
`length` must be a positive 32-bit integer
Error during evaluating file "app.js": 
```
无论是更改小程序基础库,还是
- 探索
出问题的地方是,通过HbuilderX,编译后形成的common/vendor.js以下代码:
```js
module.exports = function setFunctionLength(fn, length) {
    if (typeof fn !== 'function') {
        throw new $TypeError('`fn` is not a function');
    }
    if (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {
        // throw new $TypeError('`length` must be a positive 32-bit integer');
        return fn //此处更改
    }


    /***以下代码省略***/
    return fn;
};
```
在报错的地方打日志,发现是解析一个叫:apply的方法有错代码如下:
```js
// var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);
var $reflectApply=Reflect.apply //此处更改


var $defineProperty = __webpack_require__(/*! es-define-property */ 51);
var $max = GetIntrinsic('%Math.max%');


module.exports = function callBind(originalFunction) {
    if (typeof originalFunction !== 'function') {
        throw new $TypeError('a function is required');
    }
    var func = $reflectApply(bind, $call, arguments);
    return setFunctionLength(
        func,
        1 + $max(0, originalFunction.length - (arguments.length - 1)),
        true
    );
};
```
在小程序中,似乎"$max方法不生效"



- 最终解决办法
使用原始的yarn.lock,删除掉node_modules,再次执行yarn。  
详细调查是引用的call-bind这个库更新导致set-function-length判断异常。


最后一次编辑于  01-07
回答关注问题邀请回答
收藏

1 个回答

  • 一条鱼
    一条鱼
    2024-08-19

    已解决,有两种办法解决。

    2024-08-19
    有用
    回复 3
    • 追逐我的明天
      追逐我的明天
      2024-08-20
      请问怎么解决的
      2024-08-20
      回复
    • Skins
      Skins
      2024-08-21
      请问怎么解决的
      2024-08-21
      回复
    • .Nuyoah
      .Nuyoah
      2024-10-30
      请问怎么解决
      2024-10-30
      回复
登录 后发表内容