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

使用@rollup/plugin-node-resolve无法正确选择package.json的browser入口

方案1:调整@rollup/plugin-node-resolve配置优先级

之前的配置未生效大概率是条件匹配顺序的问题,exportConditions默认会包含node、import、default等内置条件,需要显式把browser放在条件序列最前面,同时关闭node内置模块优先匹配:

nodeResolve({
  browser: true,
  preferBuiltins: false, // 关键:禁止优先匹配node原生模块逻辑
  mainFields: ['browser', 'module', 'main'], // 按优先级排列入口字段
  exportConditions: ['browser', 'module', 'import', 'default'], // 把browser放在最优先匹配的位置
})

方案2:通过snowpack别名强制指定入口

如果解析规则调整不生效,直接用alias硬定向到浏览器版本入口,不受模块解析逻辑影响:
在snowpack.config.js中添加如下配置:

module.exports = {
  alias: {
    'broadcast-channel': 'broadcast-channel/dist/esbrowser/index.js'
  },
  // 其余原有配置
}

如果需要区分开发环境和生产环境,也可以按环境判断指向对应导出文件。

方案3:@snowpack/plugin-webpack场景的修复配置

如果使用webpack插件时也出现问题,在webpack配置中添加对应规则即可:
首先在snowpack.config.js中给webpack插件传配置:

module.exports = {
  plugins: [
    ['@snowpack/plugin-webpack', {
      extendConfig: (config) => {
        // 调整webpack的解析条件优先级
        config.resolve.conditionNames = ['browser', 'import', 'module', 'default']
        // 也可以直接加alias强制定向
        config.resolve.alias['broadcast-channel'] = 'broadcast-channel/dist/esbrowser/index.js'
        return config
      }
    }]
  ]
}

注意:每次修改解析相关配置后,建议先删除项目根目录下的.snowpack缓存文件夹,再重启开发服务/打包流程,避免缓存导致配置不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:54:00