我有:
$http
url: '/api/v1/session/check'
method: 'POST'
data: sessionCheck
.success (response) =>
if response.authenticated is true
@user = response.user
deferred.resolve response
.error (data, status, headers, config) ->
deferred.reject data
throw {
data: data
status: status
headers: headers
config: config
}
在我的karma.conf.coffee
中,我有:
preprocessors:
'public/scripts/**/*.coffee': ['coverage']
'test/webapp/unit/**/*.coffee': ['coffee']
singleRun: true
reporters: ['story', 'coverage']
coverageReporter:
type: 'html'
dir: 'test/webapp/coverage/'
但是当我运行测试时,我收到错误消息:
ERROR [preprocessor.coverage]: Syntax error on line 59, column 8: unexpected '.' (\u002E)
56 : url: '/api/v1/session/check'
57 : method: 'POST'
58 : data: sessionCheck
59 : .success (response) =>
^^ :~~~~~~~~^
60 : if response.authenticated is true
61 : @user = response.user
62 :
当然,这对我来说毫无意义。因为如果我将代码更改为:
$http(
url: '/api/v1/session/check'
method: 'POST'
data: sessionCheck
).success((response) =>
if response.authenticated is true
@user = response.user
deferred.resolve response
).error((data, status, headers, config) ->
deferred.reject data
throw {
data: data
status: status
headers: headers
config: config
}
)
然后它工作正常。这两个CoffeeScript片段编译为相同的 JavaScript,那么是什么给出了什么?
答案 0 :(得分:1)
您使用的是最新的业力咖啡预处理器吗? 看起来你的业力预处理器使用过时版本的coffeescript(< 1.7)。 没有括号的方法链接仅在1.7中添加,不久前就出现了。