Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用javascript从AWS S3 bucket获取文件计数或列表_Javascript_Amazon Web Services_Amazon S3_Cypress - Fatal编程技术网

无法使用javascript从AWS S3 bucket获取文件计数或列表

无法使用javascript从AWS S3 bucket获取文件计数或列表,javascript,amazon-web-services,amazon-s3,cypress,Javascript,Amazon Web Services,Amazon S3,Cypress,我正在使用Cypress测试,其中一个验证是获取S3存储桶中的文件数。 但我无法获得S3存储桶中的文件数 const AWS = require("aws-sdk"); const fs = require("fs"); AWS.config.update({ accessKeyId: 'xxxxx', secretAccessKey: 'yyyyyyy', region: 'abide', }); const ge

我正在使用Cypress测试,其中一个验证是获取S3存储桶中的文件数。 但我无法获得S3存储桶中的文件数

 const AWS = require("aws-sdk");
const fs = require("fs");
  
  AWS.config.update({
    accessKeyId: 'xxxxx',
    secretAccessKey: 'yyyyyyy',
    region: 'abide',
  });
const getCountOfFiles = async (bucketname, prefix) => {
    try {
      cy.log(bucketname)
      cy.log(prefix)
      const data = await s3.listObjectsV2({
        Bucket: bucketname,
        Prefix: prefix, // Limcits response to keys that begin with specified prefix
      }).promise().then(mydata => {
        return mydata;
      })
      cy.log('---------')
      if (data.$response.error) {
        throw new Error('Could not list files in S3: ${data.$response.error}');
      }
      return data;
    } catch {e} {
      cy.log(e.message)
      //throw new Error('Could not list files in S3: ${e.message}');
    }
  };
下面是Cypress代码

describe('Validate api field validation', () => {
  
  it('Verify objects land in correct AWS S3 bucket', () => {
    var date = new Date();
    var bucketDirectory = date.getUTCFullYear()
    var bucketLocation = Cypress.env('aws_bucketLocation')
    cy.log(bucketDirectory)
    try{
      var ss=getCountOfFiles(bucketLocation,bucketDirectory)
    }
    catch(err){
      cy.log(err)
    }
    cy.log(ss)
  })
}
下面是我用来获取S3存储桶中文件数量的函数

 const AWS = require("aws-sdk");
const fs = require("fs");
  
  AWS.config.update({
    accessKeyId: 'xxxxx',
    secretAccessKey: 'yyyyyyy',
    region: 'abide',
  });
const getCountOfFiles = async (bucketname, prefix) => {
    try {
      cy.log(bucketname)
      cy.log(prefix)
      const data = await s3.listObjectsV2({
        Bucket: bucketname,
        Prefix: prefix, // Limcits response to keys that begin with specified prefix
      }).promise().then(mydata => {
        return mydata;
      })
      cy.log('---------')
      if (data.$response.error) {
        throw new Error('Could not list files in S3: ${data.$response.error}');
      }
      return data;
    } catch {e} {
      cy.log(e.message)
      //throw new Error('Could not list files in S3: ${e.message}');
    }
  };
我试图将日志中发生的事情打印出来,但即使是我也无法捕获异常。我不确定我在这里哪里出了问题。 所有数据都是完美的。这是我正在做的傻事。 该目录存在于AWS中。即使它不存在或输入数据中有错误,为什么不打印异常??
谁能帮我一下吗。这是Cypress的限制吗???

您可以添加您获得的日志输出吗?而且,
getCountOfFiles
async
,因此它会返回一个承诺,非常感谢JessefTerren。这里没有输出。cypress测试为绿色,表示一切正常。S3的bucket名称和前缀被打印出来并停在那里。我的意思是,console.log(ss)不会打印任何东西。只有一个空格如果你用
getCountOfFiles(bucketLocation,bucketDirectory)替换
var ss
行,你会得到什么控制台输出?然后(data=>console.log(“data:”,data))
@jessefteren-只是一个{}