【问题标题】:coffeescript/node: undefined var but unsure why咖啡脚本/节点:未定义的变量,但不确定原因
【发布时间】:2015-12-04 16:07:46
【问题描述】:

我在coffeescript中有这些代码行:

  useragent = if req and req.headers then req.headers['user-agent'] else ""
  isIE = ~useragent.toLowerCase().indexOf('msie')

然而,这段代码在运行几个月后开始突然抛出错误:

TypeError: Cannot call method 'toLowerCase' of undefined

有什么线索可能是错的吗?

【问题讨论】:

  • 我要做的第一件事是查看从您的实际 CoffeeScript 文件生成的 JavaScript(不仅仅是复制和粘贴的代码)。缩进对于 CoffeeScript 来说有点^H^H^H 问题,所以看看实际文件本身是如何被转译的很重要。
  • 您没有检查req.headers['user-agent'] 是否已定义,因此它可能未定义或不是字符串,这会导致这种情况。
  • 你基本上是在做useragent = req?.headers?['user-agent'] ? ''
  • @plalx: ~-1===0==false.
  • @plalx bitwise NOT 是一个很好的方法,如果它没有找到子字符串,则强制 indexOf 的返回值为 false,如果找到,则为 true。

标签: javascript node.js coffeescript


【解决方案1】:

req.headers['user-agent'] 也可以是未定义的。请尝试以下操作:

useragent = req?.headers?['user-agent'] ? ''
isIE = 'msie' in useragent.toLowerCase()

假设用户代理如果找到将始终是一个字符串。否则,您需要明确检查类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2012-09-10
    • 1970-01-01
    • 2012-05-14
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多