2015-09-08 44 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() 

它假定用戶代理(如果找到的話)始終是一個字符串。否則,你會想明確檢查類型。