0

我正在使用 expressjs,在运行 webapagetest 之后,我将字符串格式的 url 存储在一个变量中,然后我在请求节点模块中使用这个变量从该 url 获取数据,但是我得到 undefined is not a valid uri或选项。这是我的 JavaScript 代码

 var WebPageTest = require('webpagetest');
    var wpt = new WebPageTest('url of private webpagetest instance server');

    wpt.runTest('https://google.com', function(err, data) {
        console.log(err || data);
        console.log(data.data.summaryCSV);
        sid = data.data.summaryCSV;
        console.log(typeof sid);

    });

    request(sid,function(error,response,body){
        console.log(body);

我在最后一行“请求”中收到错误

谢谢。

4

2 回答 2

1

试试这个:

var WebPageTest = require('webpagetest'); 
var wpt = new WebPageTest('server-url'); 
wpt.runTest('some url', function(err, data) {
    console.log(err || data); 
    console.log(data.data.summaryCSV); 
    console.log("GOING INTO REQUEST MODULE!!"); 
    request('data_url', function (error, response, body) { 
       if (error) { 
      console.log(error); 
      } 
      console.log(body); 
      var data = body;
    })
});
于 2015-10-27T12:51:01.607 回答
1

您收到错误消息,因为该runTest函数是异步操作,因此您不应依赖以下代码行中设置的值,因为您无法确定异步调用是否已经完成。要实现您想做的事情,您可以:

  • 直接在回调函数中调用代码(正如@Subburaj 建议的那样),
  • 在回调内部调用你自己的回调函数(在这种情况下,将请求包装在一个函数中,并在内部调用它)
  • 使用像 Bluebird 这样的 Promise,然后您可以简单地使用该then函数来调用您的请求
于 2015-10-27T12:56:05.983 回答