Javascript 预签名URL承诺类型错误:res.json不是函数NodeJS响应错误

Javascript 预签名URL承诺类型错误:res.json不是函数NodeJS响应错误,javascript,node.js,amazon-s3,pre-signed-url,Javascript,Node.js,Amazon S3,Pre Signed Url,我试图为存储在私有s3存储桶中的文件创建一个预签名URL数组,但由于res.json函数错误,我似乎无法返回它们。尽管有很多线程都有同样的问题,但我还是无法解决这个问题。我的代码有什么问题 const express = require('express'); const AWS = require('aws-sdk'); let config = require('./config'); let app = express(); var s3 = new AWS.S3(); s3.confi

我试图为存储在私有s3存储桶中的文件创建一个预签名URL数组,但由于res.json函数错误,我似乎无法返回它们。尽管有很多线程都有同样的问题,但我还是无法解决这个问题。我的代码有什么问题

const express = require('express');
const AWS = require('aws-sdk');
let config = require('./config');
let app = express();

var s3 = new AWS.S3();
s3.config.update({
    accessKeyId: config.accessKeyId,
    secretAccessKey: config.secretAccessKey,
    region: 'us-east-2'
});



// Create an array that houses pre-signed Urls
// Loop through x amt of times (depending on number of documents)
// Push each url into an array called 'preSignedUrls'
// Exit loop and reset array to re-generate new urls
var router = express.Router();


function getSignedURL(res) {
    Key = ['file1.pdf', 'file2.pdf'];
    let promises = [];
    let i = 0;
    while(i < Key.length){

        var params = {
            Bucket: 'bucketname',
            Key: Key[i],
            Expires: 36000
        };

        promises.push(s3.getSignedUrlPromise('getObject', params));
        console.log(promises)
        i++;
    }
    Promise.all(promises)
    .then( response => {
        res.json(response);
    }, function(err) { 
    console.log(err);
    });

}


router.route('/get_signed_url')
.get(getSignedURL);
//                 if (err) {
    // console.log(err);
    // return next(err);

router.route('/get_signed_url')
app.use('/v1', router);

var PORT = process.env.PORT || 3001;
var HOST = process.env.HOST || '11.123.346.789';

console.log("Listening on", HOST, PORT);
app.listen(PORT, HOST);
const express=require('express');
const AWS=require('AWS-sdk');
让config=require('./config');
设app=express();
var s3=新的AWS.s3();
s3.config.update({
accessKeyId:config.accessKeyId,
secretAccessKey:config.secretAccessKey,
地区:“美国-东部-2”
});
//创建包含预签名URL的数组
//循环x次数(取决于文档数量)
//将每个url推送到一个名为“preSignedUrls”的数组中
//退出循环并重置数组以重新生成新URL
var router=express.router();
函数getSignedURL(res){
Key=['file1.pdf','file2.pdf'];
让承诺=[];
设i=0;
while(i{
res.json(响应);
},函数(err){
控制台日志(err);
});
}
router.route(“/get\u signed\u url”)
.get(getSignedURL);
//如果(错误){
//控制台日志(err);
//返回下一个(错误);
router.route(“/get\u signed\u url”)
应用程序使用('/v1',路由器);
var PORT=process.env.PORT | | 3001;
var HOST=process.env.HOST | |“11.123.346.789”;
console.log(“监听”、主机、端口);
应用程序侦听(端口、主机);
我得到的是:
(节点:6717)未处理Promisejection警告:未处理的承诺拒绝(拒绝id:5):类型错误:res.json不是函数
,响应对象是第二个而不是第一个。

请求控制器的签名是
getSignedURL(req,res)
,响应对象是第二个而不是第一个