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

Rollup构建中process.argv引发process未定义错误的解决咨询

解决自定义Rollup包导入时process is not defined(针对process.argv)的问题

核心原因

浏览器环境本身不存在Node.js的process全局对象,尤其是process.argv是Node.js特有的命令行参数对象,浏览器完全不支持。你之前用rollup-plugin-replace处理了process.env,但没覆盖process.argv的场景,导致报错。

具体解决思路

1. 精准替换process.argv为浏览器兼容值

直接在Rollup配置里用rollup-plugin-replace把代码中的process.argv替换成浏览器能识别的静态值,比如空数组或者根据环境自定义的数组:

import replace from 'rollup-plugin-replace';

export default {
  input: 'src/index.js',
  output: {
    dir: 'dist/esm',
    format: 'esm'
  },
  plugins: [
    replace({
      // 保留你之前的process.env处理
      'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
      // 替换process.argv为静态值,比如空数组
      'process.argv': JSON.stringify([]),
      // 避免替换时产生赋值语法错误
      preventAssignment: true
    })
  ]
};

注意:要确保替换的字符串和你源码中process.argv的写法完全一致(比如有没有空格、是否是完整的process.argv调用),否则替换不会生效。

2. 在自定义包源码中做环境判断

如果这个包是你自己维护的,直接在源码里加环境判断,避免在浏览器环境执行process.argv相关逻辑:

// 源码中使用process.argv的地方
let argv;
if (typeof process !== 'undefined' && process.argv) {
  argv = process.argv;
  // 原本的Node.js环境逻辑
} else {
  // 浏览器环境下的 fallback 逻辑,比如设为空数组或其他默认值
  argv = [];
}

这种方式更灵活,能根据不同环境提供适配逻辑,还能避免不必要的替换。

3. 使用Node全局变量模拟插件

用@rollup/plugin-node-globals插件在浏览器环境中模拟Node.js的全局变量(包括process):
首先安装插件:

npm install @rollup/plugin-node-globals --save-dev

然后添加到Rollup配置:

import nodeGlobals from '@rollup/plugin-node-globals';

export default {
  // 其他配置
  plugins: [
    // 其他插件(比如replace)
    nodeGlobals()
  ]
};

这个插件会给浏览器环境注入一个模拟的process对象,其中process.argv会被设为空数组。缺点是会增加包体积,适合确实需要完整模拟Node全局变量的场景。

4. 移除不必要的process.argv逻辑

检查自定义包的代码,确认在浏览器环境下是否真的需要process.argv的逻辑。如果不需要,可以通过条件编译或tree-shaking移除这部分代码:

  • 在源码中用/*#__PURE__*/标记帮助Rollup识别可移除的代码
  • 使用rollup-plugin-conditional-compile插件根据打包环境剔除对应代码

排查要点

  • 确认rollup-plugin-replace的配置覆盖了所有process.argv的出现位置,比如有没有process.argv[2]这种局部调用,需要对应替换成JSON.stringify([])[2]或者直接写死对应值
  • 检查Rollup的输出格式(ESM/CJS),确保替换插件在对应输出模式下生效

内容的提问来源于stack exchange,提问作者liam-fed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:58:09