解决pnpm (ERR_INVALID_THIS)异常 Node.js 20
在Node.js 20版本中,你可能会遇到如下异常:
WARN GET https://registry.npmjs.org/chatgpt/-/chatgpt-5.0.10.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
为了解决这个问题,你只需要升级到pnpm v8.3.1或更高版本。可以通过以下命令安装并激活指定版本的pnpm:
corepack prepare pnpm@8.3.1 --activate
问题原因及修复
这个问题的根本原因在于pnpm
模块依赖的node-fetch
库中,URLSearchParams.prototype[p].call()
函数调用时,错误地把this
上下文设置为了receiver
(代理对象)而非target
(原始对象)。将this
上下文设置为receiver
导致URLSearchParams
的方法无法正确访问原始对象的属性和方法,进而抛出ERR_INVALID_THIS
异常。
修复此问题的代码位于https://github.com/pnpm/node-fetch/blob/ebe57b3986135258dbac010b754fc54de4beb2a8/src/headers.js,具体更改如下:
return URLSearchParams.prototype[p].call(
target,
String(name).toLowerCase(),
String(value)
);
通过将this
上下文正确地设置为target
(原始对象),URLSearchParams
的方法可以正确访问原始对象的属性和方法,从而解决了ERR_INVALID_THIS
异常。
总结
如果你在使用Node.js 20时遇到了pnpm的ERR_INVALID_THIS
异常,请升级到pnpm v8.3.1或更高版本。这个问题已经在新版pnpm中得到修复,升级后就能解决该问题。
注意: Node.js 20.0.0版本存在异常断流问题,请升级到Node.js 20.1.0版本。
除特别注明外,本站所有文章均为原创。原创文章均已备案且受著作权保护,未经作者书面授权,请勿转载。
打赏
交流区
暂无内容




由于我使用的方案并不需要“快捷指令”等APP的配合。也无需任何系统权限。因此存在被滥用可能,请大家不要因为此事联系我,谢谢。
直接问AI吧😂
作者老哥,代码不开源。可以大致说一下实现思路吗😕
谢谢,你写的最详细,也很有效的解决了撕裂问题
很棒的教程,比我之前配置ap的方式更优雅