收藏
回答

鸿蒙4.2.0微信小程序调用wx.connectWifi接口不能正常连接wifi?

VM75:363 Error: not node js file system!path:/saaa_config.json; go __invokeHandler__ readFile worker? false

h @ VM75:363

a.WeixinJSCore.invokeHandler @ VM75:363

w @ WAServiceMainContext.js:1

invoke @ WAServiceMainContext.js:1

invoke @ WAServiceMainContext.js:1

u @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

ae @ WAServiceMainContext.js:1

o @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

I @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

e0 @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

c.emit @ WAServiceMainContext.js:1

emitInternal @ WAServiceMainContext.js:1

e @ WAServiceMainContext.js:1

c.emit @ WAServiceMainContext.js:1

emitInternal @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

_ @ WAServiceMainContext.js:1

B @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

a @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

c.emit @ WAServiceMainContext.js:1

emit @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

_emit @ WAServiceMainContext.js:1

emit @ WAServiceMainContext.js:1

emit @ WAServiceMainContext.js:1

subscribeHandler @ WAServiceMainContext.js:1

ret.subscribeHandler

Show 10 more frames

0:104 页面加载,注册 onBluetoothDeviceFound 监听器。

0:207 【权限检查】设备未连接,后台检查权限状态

0:202 【checkPermission】开始检查权限状态...

0:307 【权限引导】已显示过引导,跳过

VM75:363 error occurs:no such file or directory, open 'wxfile://ad/interstitialAdExtInfo.txt'

p @ VM75:363

(anonymous) @ VM75:363

emit @ node:events:512

emitErrorNT @ node:internal/streams/destroy:151

emitErrorCloseNT @ node:internal/streams/destroy:116

processTicksAndRejections @ node:internal/process/task_queues:82

0:511 📱 屏幕常亮设置成功

0:511 📱 屏幕常亮设置成功

0:155 模型文件已存在于本地,直接使用: wxfile://usr/best.onnx

0:298 【checkPermission】权限检查完成 - 蓝牙: true 相机: true

0:518 获取当前Wi-Fi信息失败,将启动蓝牙扫描。原因: {errno: 1505001, errCode: 12000, errMsg: "getConnectedWifi:fail:not invoke startWifi"}

fail @ 0:518

I.forEach.v.<computed> @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

G @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

r @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

callAndRemove @ WAServiceMainContext.js:1

invokeCallbackHandler @ WAServiceMainContext.js:1

ret.invokeCallbackHandler

0:1210 正在检查 Wi-Fi 状态...

0:1214 检查结果:Wi-Fi 开关已开启

WAServiceMainContext.js:1 [wxapplib]] backgroundfetch privacy fail {"errno":4,"errMsg":"private_getBackgroundFetchData:fail private_getBackgroundFetchData:fail:internal error"}

(anonymous) @ WAServiceMainContext.js:1

i @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

fail @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

u @ WAServiceMainContext.js:1

fail @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

G @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

r @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

callAndRemove @ WAServiceMainContext.js:1

invokeCallbackHandler @ WAServiceMainContext.js:1

ret.invokeCallbackHandler

0:562 蓝牙扫描已启动...

0:325 发现有效设备: softish-3d6515, 信号强度(RSSI): -42, 解析数据: {bssid: "36:30:30:15:65:3d", password: "36303015653d", version: 54402, companyId: 9999}

0:344 设备公司ID: 9999

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

VM75:363 error occurs:no such file or directory, access 'wxfile://usr/miniprogramLog/log2'

p @ VM75:363

(anonymous) @ VM75:363

(anonymous) @ node:fs:181

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:322 设备 U-ACG1C7E 未通过 parseProductManufacturerData 校验,忽略

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:325 发现有效设备: softish-8e8015, 信号强度(RSSI): -72, 解析数据: {bssid: "36:30:30:15:80:8e", password: "36303015808e", version: 54402, companyId: 9999}

0:344 设备公司ID: 9999

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:322 设备 PhoneKey 未通过 parseProductManufacturerData 校验,忽略

0:322 设备 U-ACG4C72 未通过 parseProductManufacturerData 校验,忽略

0:322 设备  未通过 parseProductManufacturerData 校验,忽略

0:692 【连接准备】关闭WiFi模块,清理环境

0:698 关闭WiFi模块失败(可能未初始化): {errno: 1505001, errCode: 12000, errMsg: "stopWifi:fail:not invoke startWifi"}

0:728 【系统信息】Android 12 | HUAWEI | LNA-AL00 | SDK 3.11.2

0:729 【连接配置】平台: android (鸿蒙)

0:730 【连接配置】WiFi超时: 30秒, 快速重试窗口: 10秒, 手动重试阈值: 10秒

0:731 【连接目标】SSID: softish-3d6515, 密码长度: 12

0:787 【WiFi模块】初始化成功

0:790 【WiFi扫描】开始扫描周边WiFi热点...

0:793 【WiFi扫描】扫描请求已发送,等待系统响应...

0:770 【WiFi扫描】发现 29 个WiFi热点

0:775 【WiFi扫描】✅ 找到目标设备: softish-3d6515, 信号强度: 99

0:815 【WiFi连接】第1次尝试连接: softish-3d6515, 已用时: 2.002秒, 扫描已完成

0:859 ❌ Wi-Fi连接失败(第1次,已用时2.035秒): {errno: 1505020, errCode: 12010, errMsg: "connectWifi:fail:unknown error"}

fail @ 0:859

I.forEach.v.<computed> @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

G @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

r @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

callAndRemove @ WAServiceMainContext.js:1

invokeCallbackHandler @ WAServiceMainContext.js:1

ret.invokeCallbackHandler

0:863 【12010错误诊断】系统: Android 12, 品牌: HUAWEI, 扫描状态: 已完成

fail @ 0:863

I.forEach.v.<computed> @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

G @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

r @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

callAndRemove @ WAServiceMainContext.js:1

invokeCallbackHandler @ WAServiceMainContext.js:1

ret.invokeCallbackHandler

0:872 【重试】第1次失败,3秒后重试

0:815 【WiFi连接】第2次尝试连接: softish-3d6515, 已用时: 5.037秒, 扫描已完成

0:859 ❌ Wi-Fi连接失败(第2次,已用时5.058秒): {errno: 1505020, errCode: 12010, errMsg: "connectWifi:fail:unknown error"}

fail @ 0:859

I.forEach.v.<computed> @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

G @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

r @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

callAndRemove @ WAServiceMainContext.js:1

invokeCallbackHandler @ WAServiceMainContext.js:1

ret.invokeCallbackHandler

0:863 【12010错误诊断】系统: Android 12, 品牌: HUAWEI, 扫描状态: 已完成

fail @ 0:863

I.forEach.v.<computed> @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

G @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

r @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

callAndRemove @ WAServiceMainContext.js:1

invokeCallbackHandler @ WAServiceMainContext.js:1

ret.invokeCallbackHandler

0:872 【重试】第2次失败,3秒后重试

0:815 【WiFi连接】第3次尝试连接: softish-3d6515, 已用时: 8.059秒, 扫描已完成

0:859 ❌ Wi-Fi连接失败(第3次,已用时8.076秒): {errno: 1505020, errCode: 12010, errMsg: "connectWifi:fail:unknown error"}

fail @ 0:859

I.forEach.v.<computed> @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

G @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

r @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

callAndRemove @ WAServiceMainContext.js:1

invokeCallbackHandler @ WAServiceMainContext.js:1

ret.invokeCallbackHandler

0:863 【12010错误诊断】系统: Android 12, 品牌: HUAWEI, 扫描状态: 已完成

fail @ 0:863

I.forEach.v.<computed> @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

G @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

r @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

callAndRemove @ WAServiceMainContext.js:1

invokeCallbackHandler @ WAServiceMainContext.js:1

ret.invokeCallbackHandler

0:872 【重试】第3次失败,3秒后重试

0:815 【WiFi连接】第4次尝试连接: softish-3d6515, 已用时: 11.077秒, 扫描已完成

0:859 ❌ Wi-Fi连接失败(第4次,已用时11.088秒): {errno: 1505020, errCode: 12010, errMsg: "connectWifi:fail:unknown error"}

fail @ 0:859

I.forEach.v.<computed> @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

G @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

r @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

callAndRemove @ WAServiceMainContext.js:1

invokeCallbackHandler @ WAServiceMainContext.js:1

ret.invokeCallbackHandler

0:863 【12010错误诊断】系统: Android 12, 品牌: HUAWEI, 扫描状态: 已完成

fail @ 0:863

I.forEach.v.<computed> @ WAServiceMainContext.js:1

p @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

G @ WAServiceMainContext.js:1

(anonymous) @ WAServiceMainContext.js:1

r @ WAServiceMainContext.js:1

s @ WAServiceMainContext.js:1

callAndRemove @ WAServiceMainContext.js:1

invokeCallbackHandler @ WAServiceMainContext.js:1

ret.invokeCallbackHandler


  startWifiConnectionWithRetry(wifiSsid, wifiPassword, device) {

    let connectionAttemptFinished = false;

    let retryCount = 0;

   

    // 获取平台信息

    const systemInfo = wx.getSystemInfoSync();

    const isIOS = systemInfo.platform === 'ios';

   

    // 新的超时配置

    const wifiTimeout = 30000; // WiFi连接API超时时间:30秒

    const quickRetryWindow = 10000; // 快速重试窗口:10秒内报错立即重试

    const manualRetryThreshold = isIOS ? 15000 : 10000; // 需要手动重试的阈值:iOS 15秒,Android 10秒

    const startTime = Date.now();

   

    console.log(`【连接配置】平台: ${systemInfo.platform}`);

    console.log(`【连接配置】WiFi超时: ${wifiTimeout/1000}秒, 快速重试窗口: ${quickRetryWindow/1000}秒, 手动重试阈值: ${manualRetryThreshold/1000}秒`);

   

    // 清除之前的超时定时器

    if (this.connectTimeoutId) {

      clearTimeout(this.connectTimeoutId);

    }

   

    // 设置WiFi连接总超时(30秒)

    this.connectTimeoutId = setTimeout(() => {

      if (connectionAttemptFinished) return;

     

      connectionAttemptFinished = true;

      console.error(`WiFi连接超时:${wifiTimeout/1000}秒内未能连接成功。`);

     

      // 立即重置所有状态,防止误操作

      this.setData({

        isConnecting: false,

        isConnected: false,

        statusText: "连接超时"

      });

     

      // 清除全局连接状态

      const app = getApp();

      app.globalData.isConnected = false;

     

      // 停止心跳服务

      if (app.udp) {

        app.stopHeartbeatService();

      }

     

      // 显示手动重连提示

      this.promptManualConnection(wifiSsid, wifiPassword, '连接超时');

    }, wifiTimeout);

   

    // 初始化WiFi模块

    wx.startWifi({

      success: () => {

        console.log("【WiFi模块】初始化成功");

      },

      fail: (err) => {

        console.log("【WiFi模块】初始化失败(可能已初始化):", err);

      }

    });


    // 连接函数

    const tryConnect = () => {

      if (connectionAttemptFinished) {

        console.log("连接已结束,停止重试");

        return;

      }

     

      retryCount++;

      const elapsed = Date.now() - startTime;

      console.log(`【WiFi连接】第${retryCount}次尝试连接: ${wifiSsid}, 已用时: ${elapsed/1000}秒`);

      this.setData({

        statusText: `正在连接设备...`

      });

     

      wx.connectWifi({

        SSID: wifiSsid,

        password: wifiPassword,

        timeout: wifiTimeout, // 设置单次连接超时为30秒

        success: () => {

            // 检查是否已经有其他连接成功(防止重复处理)

            if (connectionAttemptFinished) {

              console.log("已有其他连接成功,忽略本次成功");

              return;

            }

           

            console.log(`Wi-Fi连接API调用成功,开始等待设备响应`);

            connectionAttemptFinished = true;

           

            // 清除总超时定时器

            if (this.connectTimeoutId) {

              clearTimeout(this.connectTimeoutId);

              this.connectTimeoutId = null;

            }

           

            // 保存设备信息

            wx.setStorageSync(this.lastConnectedWifiNameKey, device.localName);

           

            // 启动心跳服务

            const app = getApp();

            app.startHeartbeatService();

            this.setData({ statusText: "正在建立设备通信..." });

           

            // 直接进入心跳验证

            this.waitForDeviceResponse();

          },

          fail: (err) => {

            // 检查是否已经结束(防止重复处理)

            if (connectionAttemptFinished) {

              console.log("连接已结束,忽略本次失败");

              return;

            }

           

            const elapsed = Date.now() - startTime;

            console.error(`Wi-Fi连接失败(第${retryCount}次,已用时${elapsed/1000}秒):`, err);

           

            // 根据失败时间和错误类型决定是否重试

            const isInternalError = err.errCode === 12010;

            const retryDelay = isInternalError ? 3000 : (retryCount > 3 ? 2000 : 1000);


            if (elapsed < quickRetryWindow && retryCount < 5) {

              // 10秒内失败且重试次数少于5次

              console.log(`【重试】第${retryCount}次失败,${retryDelay/1000}秒后重试`);

              setTimeout(() => {

                tryConnect();

              }, retryDelay); // 根据错误类型和重试次数调整延迟

            } else if (elapsed < manualRetryThreshold) {

              // 10秒后但在阈值内(Android 10秒,iOS 15秒),需要手动重连

              console.log(`【需要手动】${elapsed/1000}秒后失败,需要手动重连`);

              connectionAttemptFinished = true;

             

              // 清除超时定时器

              if (this.connectTimeoutId) {

                clearTimeout(this.connectTimeoutId);

                this.connectTimeoutId = null;

              }

             

              // 重置状态

              this.setData({

                isConnecting: false,

                isConnected: false,

                statusText: "连接失败"

              });

             

              // 清除全局连接状态

              const app = getApp();

              app.globalData.isConnected = false;

             

              // 停止心跳服务

              if (app.udp) {

                app.stopHeartbeatService();

              }

             

              // 显示手动重连提示

              this.promptManualConnection(wifiSsid, wifiPassword, '连接失败');

            }

            // 如果超过阈值,等待30秒WiFi超时

          }

        });

    };


    // 延迟1秒后开始第一次连接(给设备WiFi启动时间)

    setTimeout(() => {

      tryConnect();

    }, 1000);

  },


回答关注问题邀请回答
收藏

1 个回答

  • 社区技术运营专员--阳光
    社区技术运营专员--阳光
    2025-11-28

    你好,还能复现吗,麻烦复现一次 在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,提供一下微信号,时间点

    2025-11-28
    有用
    回复 1
    • 五月
      五月
      01-05
      鸿蒙4.2.0系统调用就直接报错
      01-05
      回复
登录 后发表内容