Node.JS 请求模块回调未触发
Node.JS Request Module Callback Not Firing
我 运行 此代码使用 node.js
的请求模块
var hsKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
var hsForm = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
var hsHost = "https://docs.google.com/"
var url = hsHost + "forms/d/" + hsForm + "/formResponse"
var form = {
"entry.129401737": pointsAvg,
"entry.2000749128": hiddenNeurons,
"submit": "Submit",
"formkey": hsKey
};
request.post({
url: url,
form: form
}, function (err, res, body) {
console.log("Sent data");
});
我已经尝试 运行 上面的代码只是使用标准 Node.JS 库,但没有成功。永远不会触发回调函数,并且请求不会通过。不知道为什么。
看看this question:
您的代码应该类似于
var hsKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var hsForm = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var hsHost = "https://docs.google.com/"
var url = hsHost + "forms/d/" + hsForm + "/formResponse"
var form = {
"entry.129401737": pointsAvg,
"entry.2000749128": hiddenNeurons,
"submit": "Submit",
"formkey": hsKey
};
request.post({
url: url,
form: form
}, function (response) {
response.setEncoding('utf8');
response.on('data', function(chunk){
//do something with chunk
});
});
data
事件应该在收到响应时触发。
因此,如果您在 npm
阅读请求模块的文档
request
.get('http://google.com/img.png')
.on('response', function(response) {
console.log(response.statusCode) // 200
console.log(response.headers['content-type']) // 'image/png'
});
有一个 response
事件应该被触发。
我相信我已经找到了我自己问题的答案。问题似乎是我没有在 Node.js 事件循环中分配任何时间来允许执行请求。
我运行也喜欢这个。我最终创建了一个单独的 js 文件,其中仅包含请求,没有 describe 和 it 方法,并且 运行 它带有 'mocha mynewbarebonesreq.js'。突然间,我看到有一个异常被 mocha 抛出并吞没了(使用标准报告器,规范)。
我终于安装并启用了 mocha_reporter 显示异常
现在看起来像这样:
describe('CMSLogin', function () {
it('should log in as user ' + JSON.stringify(USER_PASS), function (done) {
request({
url: "http://cms.lund.multiq.com:3000/api/CMSUsers/login",
method: "POST",
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
json: false,
body: JSON.stringify(USER_PASS)
}, (err, res, body) => {
var parsedBody = JSON.parse(body);
this.token = parsedBody.id;
console.log(this.token)
assert.equal(USER_PASS.userId, parsedBody.userId);
assert.doesNotThrow(() => Date.parse(parsedBody.created));
if (err) { done.fail(err); }
done();
});
});
}
我 运行 此代码使用 node.js
的请求模块var hsKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
var hsForm = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
var hsHost = "https://docs.google.com/"
var url = hsHost + "forms/d/" + hsForm + "/formResponse"
var form = {
"entry.129401737": pointsAvg,
"entry.2000749128": hiddenNeurons,
"submit": "Submit",
"formkey": hsKey
};
request.post({
url: url,
form: form
}, function (err, res, body) {
console.log("Sent data");
});
我已经尝试 运行 上面的代码只是使用标准 Node.JS 库,但没有成功。永远不会触发回调函数,并且请求不会通过。不知道为什么。
看看this question:
您的代码应该类似于
var hsKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var hsForm = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var hsHost = "https://docs.google.com/"
var url = hsHost + "forms/d/" + hsForm + "/formResponse"
var form = {
"entry.129401737": pointsAvg,
"entry.2000749128": hiddenNeurons,
"submit": "Submit",
"formkey": hsKey
};
request.post({
url: url,
form: form
}, function (response) {
response.setEncoding('utf8');
response.on('data', function(chunk){
//do something with chunk
});
});
data
事件应该在收到响应时触发。
因此,如果您在 npm
阅读请求模块的文档request
.get('http://google.com/img.png')
.on('response', function(response) {
console.log(response.statusCode) // 200
console.log(response.headers['content-type']) // 'image/png'
});
有一个 response
事件应该被触发。
我相信我已经找到了我自己问题的答案。问题似乎是我没有在 Node.js 事件循环中分配任何时间来允许执行请求。
我运行也喜欢这个。我最终创建了一个单独的 js 文件,其中仅包含请求,没有 describe 和 it 方法,并且 运行 它带有 'mocha mynewbarebonesreq.js'。突然间,我看到有一个异常被 mocha 抛出并吞没了(使用标准报告器,规范)。
我终于安装并启用了 mocha_reporter 显示异常
现在看起来像这样:
describe('CMSLogin', function () {
it('should log in as user ' + JSON.stringify(USER_PASS), function (done) {
request({
url: "http://cms.lund.multiq.com:3000/api/CMSUsers/login",
method: "POST",
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
json: false,
body: JSON.stringify(USER_PASS)
}, (err, res, body) => {
var parsedBody = JSON.parse(body);
this.token = parsedBody.id;
console.log(this.token)
assert.equal(USER_PASS.userId, parsedBody.userId);
assert.doesNotThrow(() => Date.parse(parsedBody.created));
if (err) { done.fail(err); }
done();
});
});
}