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

使用Ramda时出现'g.call is not a function'错误如何解决?

使用Ramda.js修复i18n.t调用导致的'g.call is not a function'错误

你的问题出在pipe中的i18n.t('views.routing.dialogs.${__}')写法:这行代码会立即执行i18n.t,传入的是包含${__}的普通字符串(Ramda的__占位符在这里不生效,因为它不在函数参数位置),而不是一个等待接收星期名称的函数。pipe的每一步都要求是可调用的函数,当执行到这一步时,它会把前一步的结果传给这个“函数”,但此时i18n.t已经执行完毕,返回的是翻译后的字符串(或非函数值),自然会抛出g.call is not a function错误。

修复方案(无显式参数,仅用Ramda工具)

利用Ramda的concat拼接翻译键前缀和星期名称,再传递给i18n.t,确保pipe的每一步都是函数:

const getDayName = flip(nth)(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'])

const formatDay = ifElse(
  isNil,
  always(''),
  pipe(
    dec,
    getDayName,
    concat('views.routing.dialogs.'), // 拼接前缀与星期名称
    i18n.t // 将完整键传给i18n.t做翻译
  )
)

逻辑验证

  • 传入有效星期ID(如1):dec转为0 → getDayName返回'monday' → concat生成'views.routing.dialogs.monday' → i18n.t用该键返回对应翻译文本。
  • 传入null/undefined:直接返回空字符串,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:18:10