微信小程序上传CI插件在uni-app中检测到代码中使用了双问好“??”报错

微信小程序上传CI插件在uni-app中检测到代码中使用了双问好“??”报错

信息类别 详情
产品分类 uniapp/小程序/微信
PC开发环境 Windows
操作系统版本 Windows 11 专业版
第三方工具版本 3.95
基础库版本 3.1.5
项目创建方式 CLI
CLI版本 3.0.0-3090520231028001

示例代码:

小程序使用cli自动部署报错

操作步骤:

小程序使用cli自动部署报错

预期结果:

小程序使用cli自动部署没有报错,代码中是双问号也可以正常部署代码

实际结果:

部署不通过

示例图片


更多关于微信小程序上传CI插件在uni-app中检测到代码中使用了双问好“??”报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于微信小程序上传CI插件在uni-app中检测到代码中使用了双问好“??”报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中使用微信小程序上传 CI 插件时,如果检测到代码中使用了双问号 ??(空值合并运算符),可能会报错。这是因为微信小程序的 JavaScript 引擎版本较低,不支持 ES2020 及以上的新特性,而 ?? 是 ES2020 引入的语法。

解决方案

  1. 使用兼容的语法替代 ?? 你可以使用 || 运算符来替代 ??,但需要注意 ||?? 的行为有所不同。|| 会对所有 falsy 值(如 false0''nullundefined)进行判断,而 ?? 只对 nullundefined 进行判断。

    // 原始代码
    const value = someValue ?? defaultValue;
    
    // 替代代码
    const value = someValue !== null && someValue !== undefined ? someValue : defaultValue;
    

    或者,如果你确定 someValue 不会是其他 falsy 值,可以使用 ||

    const value = someValue || defaultValue;
    
  2. 使用 Babel 转译代码: 如果你希望继续使用 ?? 等现代 JavaScript 语法,可以通过 Babel 将代码转译为兼容低版本 JavaScript 的代码。

    uni-app 项目中,通常已经集成了 Babel,你可以在 babel.config.js 中配置相应的插件来处理 ?? 运算符。

    module.exports = {
      presets: [
        '@vue/app'
      ],
      plugins: [
        '@babel/plugin-proposal-nullish-coalescing-operator'
      ]
    };
    

    这样,Babel 会将 ?? 运算符转译为兼容的代码。

  3. 升级微信小程序基础库: 如果你有权限控制微信小程序的基础库版本,可以尝试升级到支持 ES2020 的版本。不过,这可能会影响部分用户的兼容性,因为部分用户可能仍在使用较旧的微信版本。

  4. 使用条件判断: 如果只是偶尔使用 ??,可以通过传统的条件判断语句来替代:

    const value = someValue !== null && someValue !== undefined ? someValue : defaultValue;
回到顶部