2015-09-08 47 views
0

我的代码在CoffeeScript的那些行:的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 

任何关于什么可能是错误的线索?

+0

我要做的第一件事就是从实际的CoffeeScript文件中查看生成的JavaScript(而不仅仅是复制和粘贴代码)。缩进与CoffeeScript存在一些问题,所以重要的是看看实际文件本身是如何被转译的。 –

+3

你不检查'req.headers ['user-agent']'是否被定义,所以它可能是未定义的或不是字符串,这会导致这种情况。 – ssube

+0

你基本上在做'useragent = req?.headers?['user-agent']? ''' – elclanrs

回答

1

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

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

它假定用户代理(如果找到的话)始终是一个字符串。否则,你会想明确检查类型。