undefined 不是有效的 uri 或选项对象。在 expressjs 中

undefined is not a valid uri or options object. in expressjs

我正在使用 expressjs,在 运行 webapagetest 之后,我将字符串格式的 url 存储在一个变量中,然后我在请求节点模块中使用此变量从中获取数据url,但我得到 undefined 不是有效的 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);

我在最后一行“请求”出现错误

谢谢。

试试这个:

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;
    })
});

你得到了错误,因为 runTest 函数是一个异步操作,所以你不应该依赖于下面代码行中设置的值,因为你不能确定,异步通话已经结束。要实现您想做的事情,您可以:

  • 直接在回调函数中调用代码(正如@Subburaj 所建议的那样),
  • 在回调内部调用您自己的回调函数(在这种情况下,将请求包装在一个函数中,然后在内部调用)
  • 使用像 Bluebird 这样的 promise 库,然后您可以简单地使用 then 函数来调用您的请求