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

如何让Rollup完全忽略request-promise模块?跨端库构建求助

解决Rollup忽略/替换request-promise模块的问题

我来帮你搞定这个跨环境库的Rollup配置问题!你需要的是让Rollup完全移除对request-promise的依赖,甚至把它替换成null,之前的方法没生效大概率是配置细节没到位,下面给你几个可靠的解决方案:

方案1:用rollup-plugin-ignore的正确配置

你之前试过这个插件,但可能没考虑到导入的不同形式。如果你的代码里同时存在ES模块导入和CommonJS的require,需要明确配置让插件覆盖两种情况:

import ignore from 'rollup-plugin-ignore';

export default {
  // 你的其他Rollup配置(比如input、output等)
  plugins: [
    ignore({
      modules: ['request-promise'],
      // 处理CommonJS的动态require调用
      ignoreDynamicRequires: true
    })
  ]
};

这个配置会把所有对request-promise的导入语句替换成空对象,结合你的环境检测逻辑,浏览器端不会触发Node.js分支的代码,完全不会有问题。

方案2:用@rollup/plugin-virtual创建虚拟模块

如果需要更精准地替换成null,可以用虚拟模块插件,直接把request-promise指向一个自定义的虚拟文件:

import virtual from '@rollup/plugin-virtual';

export default {
  // 你的其他Rollup配置
  plugins: [
    virtual({
      'request-promise': 'export default null;'
    })
  ]
};

这样Rollup会把所有导入request-promise的地方,直接替换成这个虚拟模块的内容——也就是导出null,完全不会打包真实的request-promise模块。

方案3:分环境打包(结合external和@rollup/plugin-replace)

如果需要单独构建浏览器版和Node.js版,可以通过环境变量配合替换逻辑:

  1. 先保留代码里的环境检测逻辑:
let requestHandler;
if (typeof window !== 'undefined') {
  // 浏览器端的XMLHttpRequest逻辑
  requestHandler = /* 你的浏览器请求实现 */;
} else {
  // Node.js端用request-promise
  const rp = require('request-promise');
  requestHandler = rp;
}
  1. 然后在Rollup配置中针对浏览器环境替换Node.js分支代码:
import replace from '@rollup/plugin-replace';

export default {
  // 你的其他Rollup配置
  plugins: [
    replace({
      // 把Node.js分支的代码替换成空实现
      "const rp = require('request-promise'); requestHandler = rp;" : "requestHandler = null;",
      preventAssignment: true
    }),
    // 标记request-promise为外部依赖,不打包进浏览器版本
    external: ['request-promise']
  ]
};

为什么之前的方法没生效?

  • external: ['request-promise']只会让Rollup不打包该模块,但会保留导入/require语句,浏览器环境下会报错;
  • rollup-plugin-ignore如果没加ignoreDynamicRequires: true,无法处理CommonJS的require调用;
  • hypothetical插件的路径可能没匹配到request-promise的真实入口文件,导致替换失败。

优先试试方案2,它最直接,能精准把request-promise替换成null,完美适配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:40:46