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

使用Request-Promise与Tough-Cookie遇str.trim is not a function错误求助

解决Request-Promise与Tough-Cookie兼容的TypeError: str.trim is not a function问题

我之前也踩过类似的兼容性坑,结合你提供的版本信息和代码,给你几个实用的解决思路:

1. 调整Tough-Cookie版本到兼容范围

Request-Promise@4.2.2对Tough-Cookie的版本依赖有特定范围,你当前用的2.3.4可能刚好触发了兼容性bug。试试降级到2.3.3版本,这个版本和Request-Promise@4.2.2的适配性更好:

npm install tough-cookie@2.3.3 --save-exact

2. 手动将Cookie对象转为字符串再传入

有时候直接传递Tough-Cookie对象给setCookie会导致内部解析异常,你可以先把Cookie转为标准字符串格式再传入:

let cookie = new tough.Cookie({
  domain: '.companyName.ninja', 
  httpOnly: true, 
  name: '_application_session', 
  path: '/', 
  secure: false, 
  value: 'f044888d39e2d19126716d9f54028700' 
})
let cookieJar = request.jar()
// 先转换为字符串格式
let cookieStr = cookie.toString();
cookieJar.setCookie(cookieStr, 'http://application.companyName.ninja/')
options.jar = cookieJar

3. 彻底清理依赖后重装

npm dedupe没效果的话,试试彻底清除现有依赖缓存和文件,重新安装确保依赖树干净:

# 删除依赖文件夹和锁文件
rm -rf node_modules package-lock.json
# 清除npm缓存
npm cache clean --force
# 重新安装依赖
npm install

4. 考虑替换Request-Promise(长期解决方案)

Request-Promise已经被官方弃用了,后续不会再更新维护,这类兼容性问题可能会越来越多。推荐换成更活跃的库,比如axios配合axios-cookiejar-support,或者node-fetch,它们的Cookie处理逻辑更稳定,社区支持也更好。

补充说明

这个str.trim is not a function错误通常是因为某个库预期处理字符串类型,但实际收到了非字符串(比如你的Cookie对象),而不同版本的Tough-Cookie在对象序列化逻辑上有差异,导致Request-Promise无法正确解析。上面的方法应该能帮你解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:37:34