Node.js 量角器投掷';TypeError:无法读取属性';状态代码';未定义的';请求回调
我正在用量角器编写UI测试,我正在通过RESTful服务直接上传文件,而不是使用UI。我有以下方法Node.js 量角器投掷';TypeError:无法读取属性';状态代码';未定义的';请求回调,node.js,selenium-webdriver,request,protractor,automated-tests,Node.js,Selenium Webdriver,Request,Protractor,Automated Tests,我正在用量角器编写UI测试,我正在通过RESTful服务直接上传文件,而不是使用UI。我有以下方法 var defer = protractor.promise.defer(); request(options, function (error, response, body) { if (!error && response.statusCode == 201) { var info = JSON.parse(body); defer.f
var defer = protractor.promise.defer();
request(options, function (error, response, body) {
if (!error && response.statusCode == 201) {
var info = JSON.parse(body);
defer.fulfill(info);
} else {
defer.reject({
error: error,
message: response.statusCode
});
}
});
return defer.promise;
注意:如果上传成功,API返回201
当我通过IDE(在Windows中)运行代码时工作正常,但我想通过Jenkins(通过Ubuntu)运行测试,在这种情况下,我会得到错误:
E/launcher - TypeError: Cannot read property 'statusCode' of undefined
at Request._callback (file.js:144:34)
at self.callback (/workspace/node_modules/request/request.js:186:22)
at emitOne (events.js:101:20)
at Request.emit (events.js:188:7)
at Request.onRequestError (/workspace/node_modules/request/request.js:845:8)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:188:7)
at Socket.socketErrorListener (_http_client.js:310:9)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
E/launcher - Process exited with error code 199
我不确定这是否与某种配置有关,或者可能是这种情况造成的,但我确实需要指导。您永远不会同时收到错误和响应,因此:
defer.reject({
error: error,
message: response.statusCode
});
当错误为真时,将尝试检查未定义的响应状态代码。也许可以试试这个:
defer.reject({
error: error,
message: response ? response.statusCode : null
});
或者类似的
但最好像这样分别处理3个案例:
if (error) {
defer.reject({
error: error
});
} else if (response.statusCode === 201) {
var info = JSON.parse(body);
defer.fulfill(info);
} else {
defer.reject({
message: response.statusCode
});
}
或者可能:
if (error) {
defer.reject({
error: error
});
} else if (response.statusCode === 201) {
var info = JSON.parse(body);
defer.fulfill(info);
} else {
defer.reject({
error: 'Bad status code: ' + response.statusCode
});
}
或者类似的东西
然后您将知道您的错误是什么,因为当前它不会在响应中返回错误,因为它在有机会返回之前崩溃了
现在,错误很可能是因为没有连接到主机或类似的东西。谢谢您的提示。应用更改后,我可以看到我的端点主机不完全正确,域丢失。标记为有效答案的。