Javascript 获得;TypeError:对象不是函数;在forEach循环中使用supertest/superagent时

Javascript 获得;TypeError:对象不是函数;在forEach循环中使用supertest/superagent时,javascript,node.js,supertest,superagent,Javascript,Node.js,Supertest,Superagent,我使用supertest按照相同的规则测试一组URL var urls = [ "https://www.example.com", "https://www.example2.com" ]; urls.forEach(function (url) { console.log('begin'); request = request(url) .get('') .expect(200) .end(function (

我使用supertest按照相同的规则测试一组URL

var urls = [
    "https://www.example.com",
    "https://www.example2.com"
];

urls.forEach(function (url) {
    console.log('begin');
    request = request(url)
        .get('')
        .expect(200)
        .end(function (err, res) {
            // Check for something
        });
    console.log('end');
});
当数组中只有一个URL时,它就可以正常工作。但是,如果我添加了第二个,则输出失败:

begin
end
begin

file.js:11
request = request(json)
^
TypeError: object is not a function

我的猜测是,我不能让supertest的一个实例运行两次,但我似乎找不到解决这个问题的方法。感谢您的帮助。

这是因为您的作业
请求=请求(url)
覆盖了请求功能

var urls = [
    "https://www.example.com",
    "https://www.example2.com"];

urls.forEach(function (url) {
    console.log('begin');
    var r = request(url)
        .get('')
        .expect(200)
        .end(function (err, res) {
        // Check for something
    });
    console.log('end');
});

在第一次迭代中,
request
指的是一个全局函数,但当计算
request=request(url)
语句时,
request
的值将更改为
request(url)返回的值
因此,在第二次迭代中,请求不再是您期望的功能。

这是因为您的分配
请求=请求(url)
覆盖了请求功能

var urls = [
    "https://www.example.com",
    "https://www.example2.com"];

urls.forEach(function (url) {
    console.log('begin');
    var r = request(url)
        .get('')
        .expect(200)
        .end(function (err, res) {
        // Check for something
    });
    console.log('end');
});

在第一次迭代中,
request
指的是一个全局函数,但当计算
request=request(url)
语句时,
request
的值将更改为
request(url)返回的值
因此,在第二次迭代中,请求不再是您期望的功能。

这是因为您的分配
请求=请求(url)
覆盖了请求功能

var urls = [
    "https://www.example.com",
    "https://www.example2.com"];

urls.forEach(function (url) {
    console.log('begin');
    var r = request(url)
        .get('')
        .expect(200)
        .end(function (err, res) {
        // Check for something
    });
    console.log('end');
});

在第一次迭代中,
request
指的是一个全局函数,但当计算
request=request(url)
语句时,
request
的值将更改为
request(url)返回的值
因此,在第二次迭代中,请求不再是您期望的功能。

这是因为您的分配
请求=请求(url)
覆盖了请求功能

var urls = [
    "https://www.example.com",
    "https://www.example2.com"];

urls.forEach(function (url) {
    console.log('begin');
    var r = request(url)
        .get('')
        .expect(200)
        .end(function (err, res) {
        // Check for something
    });
    console.log('end');
});
在第一次迭代中,
request
指的是一个全局函数,但当计算
request=request(url)
语句时,
request
的值将更改为
request(url)返回的值因此,在第二次迭代中,请求不再是您期望的功能。

更改以下内容

request = request(url)
    .get('')
    .expect(200)
    .end(function (err, res) {
        // Check for something
    });

更改以下内容

request = request(url)
    .get('')
    .expect(200)
    .end(function (err, res) {
        // Check for something
    });

更改以下内容

request = request(url)
    .get('')
    .expect(200)
    .end(function (err, res) {
        // Check for something
    });

更改以下内容

request = request(url)
    .get('')
    .expect(200)
    .end(function (err, res) {
        // Check for something
    });


任何时候,尽管我迟到了2分钟:)任何时候,尽管我迟到了2分钟:)任何时候,尽管我迟到了2分钟:)任何时候,尽管我迟到了2分钟:)