uni-app真机调试时控制台不显示错误信息

uni-app真机调试时控制台不显示错误信息

在执行代码遇到错误时.没有任何反应.报错信息都不弹出来.在控制台空空如也.

再现了以下场景. 注: 变量 abc 不存在.

console.log(abc);

此时,控制台没有任何反应.

可以打印出来错误.

请问.这个问题咋解决?


| 开发环境 | 版本号      | 项目创建方式 |
|----------|-------------|--------------|
| hbuildX  | 3.2.0.20210801-alpha | -            |
1 回复

更多关于uni-app真机调试时控制台不显示错误信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 真机调试时控制台不显示未捕获的错误信息,这是常见问题。主要原因是 uni-app 的运行机制对全局错误处理做了封装,默认不会将未定义变量这类 JavaScript 运行时错误直接抛到控制台。

解决方案:

  1. 开启 VConsole 调试:manifest.json 的源码视图中,找到当前项目的配置,添加以下代码开启调试模式:

    "h5": {
      "devServer": {}
    },
    "mp-weixin": {
      "usingComponents": true
    },
    // 添加以下配置
    "plus": {
      "allowsInlineMediaPlayback": true,
      "errorCapture": true  // 允许错误捕获
    }
    

    同时,在 main.js 或 App.vue 的 onLaunch 中加入:

    // #ifdef APP-PLUS
    plus.screen.lockOrientation('portrait-primary');
    // 开启调试模式
    if(process.env.NODE_ENV === 'development') {
      plus.webview.currentWebview().setStyle({ webviewDebug: true });
    }
    // #endif
    
  2. 主动捕获错误: 对于你示例中的 console.log(abc) 这类未定义变量错误,需要主动用 try-catch 包裹:

    try {
      console.log(abc);
    } catch(e) {
      console.error('捕获到错误:', e);
    }
    
  3. 使用全局错误监听(H5和App有效):main.js 中添加:

    // 全局错误捕获
    if(typeof window !== 'undefined') {
      window.addEventListener('error', function(event) {
        console.error('全局错误:', event.error);
      });
      
      // Promise 错误捕获
      window.addEventListener('unhandledrejection', function(event) {
        console.error('Promise 错误:', event.reason);
      });
    }
回到顶部