You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@reach/combobox编译时抛出错误,模块解析失败求助

解决@reach/combobox编译时的模块解析错误

报错详情

./node_modules/@reach/combobox/dist/reach-combobox.mjs 367:43
模块解析失败:意外的标记 (367:43)
该文件已通过以下加载器处理:

  • ./node_modules/babel-loader/lib/index.js
    您可能需要额外的加载器来处理这些加载器的输出结果。

相关代码片段:

|     id,
|     isExpanded,
|     navigationValue: data.navigationValue ?? null,
|     state
|   }) : children)));

问题原因

报错行的??是空值合并运算符,属于ES2020语法。当前Babel配置未正确处理@reach/combobox模块中的该语法,要么是缺少对应的Babel插件,要么是webpack配置排除了对node_modules中该模块的转译。

解决方案

  • 安装并启用Babel空值合并运算符插件:
    执行命令安装插件:

    npm install @babel/plugin-proposal-nullish-coalescing-operator --save-dev
    

    然后在babel.config.json或.babelrc中添加该插件:

    {
      "plugins": ["@babel/plugin-proposal-nullish-coalescing-operator"]
    }
    

    如果使用@babel/preset-env,确保配置了合适的targets,让预设自动包含所需的语法转换插件

  • 修改webpack配置,让babel-loader处理@reach/combobox:
    在webpack配置的module.rules中,针对JavaScript文件的规则,调整exclude选项,排除node_modules但例外@reach/combobox:

    module.exports = {
      module: {
        rules: [
          {
            test: /\.(js|jsx)$/,
            exclude: /node_modules(?!\/@reach\/combobox)/,
            use: 'babel-loader'
          }
        ]
      }
    }
    
  • 升级@reach/combobox到最新版本:
    执行命令升级:

    npm update @reach/combobox
    

    新版本可能已预先转译了ESNext语法,无需额外配置即可正常编译。

内容的提问来源于stack exchange,提问作者John Elijah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:01:18