【发布时间】: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