Javascript aws sdk js ReferenceError:您试图在Jest环境被破坏后“导入”一个文件

Javascript aws sdk js ReferenceError:您试图在Jest环境被破坏后“导入”一个文件,javascript,jestjs,aws-sdk-js,Javascript,Jestjs,Aws Sdk Js,我需要测试是否返回了指向AmazonS3的预签名url 当运行纱线测试时,Jest显示以下消息: ReferenceError:您试图在Jest环境被破坏后“导入”文件。 在Object.userAgent(node_modules/aws sdk/lib/util.js:34:43) 在HttpRequest.setUserAgent(node_modules/aws sdk/lib/http.js:111:78) 在新的HttpRequest(node_modules/aws sdk/lib

我需要测试是否返回了指向AmazonS3的预签名url

当运行纱线测试时,Jest显示以下消息:

ReferenceError:您试图在Jest环境被破坏后“导入”文件。
在Object.userAgent(node_modules/aws sdk/lib/util.js:34:43)
在HttpRequest.setUserAgent(node_modules/aws sdk/lib/http.js:111:78)
在新的HttpRequest(node_modules/aws sdk/lib/http.js:104:10)
在MetadataService.request(node_modules/aws sdk/lib/metadata_service.js:93:23)
在MetadataService.fetchMetadataToken(node_modules/aws sdk/lib/metadata_service.js:116:10)
这就是测试:

索引规范js

const AWS=require('AWS-sdk');
const bucketName='bucket';
const key='image.png';
描述('测试',()=>{
它('应该能够返回预签名的url',()=>{
const s3SigV4Client=new AWS.S3({
签名版本:“v4”,
});
const s3PreSignedUrl=s3SigV4Client.getSignedUrl('getObject'{
Bucket:bucketName,
钥匙:钥匙,
有效期:60,
});
expect(s3PreSignedUrl);
});
});
package.json

{
“名称”:“测试aws sdk”,
“版本”:“1.0.0”,
“main”:“index.js”,
“许可证”:“麻省理工学院”,
“脚本”:{
“测试”:“开玩笑”
},
“依赖项”:{
“aws sdk”:“^2.807.0”
},
“依赖性”:{
“笑话”:“^26.6.3”
}
}
Node.js和安装的纱线版本:

$node-v
v10.19.0
$THEAN-v
1.22.4

有件事我做错了 导入后,在测试文件中添加
jest.useFakeTimers()

例如:

const AWS = require('aws-sdk');

jest.useFakeTimers()

const bucketName = 'bucket';
const key = 'image.png';

describe('Test', () => {
  it('should be able return pre signed url', async () => {
    const s3SigV4Client = new AWS.S3({
      signatureVersion: 'v4',
    });
    
    const s3PreSignedUrl = s3SigV4Client.getSignedUrl('getObject', {
      Bucket: bucketName,
      Key: key,
      Expires: 60,
    });

    expect(s3PreSignedUrl);
  });
});
我不相信。只有那个?