在 Node.js 中发出请求时提示使用 URL
Prompting for a URL to use while making a request in Node.js
我想做的是提示用户输入 url 并使用输入的 url 我想发出一个 http 请求。但是我不断收到一条错误消息
"TypeError: Cannot read property 'parent' of undefined."
当我将 url 直接硬编码到请求中时,它工作正常。只有一次我尝试提示它时出现错误。
var answer = '';
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Enter a url you'd like to scrape: ", function(answer) {
// TODO: Log the answer in a database
console.log("This is the url you enetered:", answer);
rl.close();
});
request(answer, function(error,response,html){
//some code here
});
TIA!
看起来您正试图让事情异步执行,但它们以同步方式工作。这似乎更符合你想做的事情:
'use strict';
const readline = require('readline');
const request = require('request');
let answer = '';
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Enter a url you'd like to scrape: ", function(answer) {
// TODO: Log the answer in a database
console.log("This is the url you enetered:", answer);
rl.close();
crawl(answer, function (error, response, html) {
console.log(html);
// or whatever else you want
});
});
//use wrapper function
function crawl(answer, callback){
request(answer, function (error, response, html) {
callback(error, response, html);
});
}
您也可以只在 rl.question()
中使用 request(answer, function...)
调用,但是如果您将其包装在另一个函数中,您可以获得更好的可读性并在其他地方再次使用它
我想做的是提示用户输入 url 并使用输入的 url 我想发出一个 http 请求。但是我不断收到一条错误消息 "TypeError: Cannot read property 'parent' of undefined."
当我将 url 直接硬编码到请求中时,它工作正常。只有一次我尝试提示它时出现错误。
var answer = '';
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Enter a url you'd like to scrape: ", function(answer) {
// TODO: Log the answer in a database
console.log("This is the url you enetered:", answer);
rl.close();
});
request(answer, function(error,response,html){
//some code here
});
TIA!
看起来您正试图让事情异步执行,但它们以同步方式工作。这似乎更符合你想做的事情:
'use strict';
const readline = require('readline');
const request = require('request');
let answer = '';
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Enter a url you'd like to scrape: ", function(answer) {
// TODO: Log the answer in a database
console.log("This is the url you enetered:", answer);
rl.close();
crawl(answer, function (error, response, html) {
console.log(html);
// or whatever else you want
});
});
//use wrapper function
function crawl(answer, callback){
request(answer, function (error, response, html) {
callback(error, response, html);
});
}
您也可以只在 rl.question()
中使用 request(answer, function...)
调用,但是如果您将其包装在另一个函数中,您可以获得更好的可读性并在其他地方再次使用它