Vue.js web worker中的AWS SDK V3 S3Client引发引用错误:未定义窗口

Vue.js web worker中的AWS SDK V3 S3Client引发引用错误:未定义窗口,vue.js,web-worker,aws-sdk-js,Vue.js,Web Worker,Aws Sdk Js,在Vue JS应用程序中,我使用web worker生成签名URL。使用@aws sdk/client-s3版本3.0.0时,此代码工作正常。但是,更高版本的getSignedUrl()调用失败,错误为“ReferenceError:未定义窗口”” (worker.js) 从'@aws sdk/client-s3'导入{S3Client,GetObjectCommand}; 从“@aws sdk/s3请求预签名器”导入{getSignedUrl}; 异步函数生成器(s3config,bucket

在Vue JS应用程序中,我使用web worker生成签名URL。使用
@aws sdk/client-s3
版本3.0.0时,此代码工作正常。但是,更高版本的
getSignedUrl()
调用失败,错误为“
ReferenceError:未定义窗口”

(worker.js)
从'@aws sdk/client-s3'导入{S3Client,GetObjectCommand};
从“@aws sdk/s3请求预签名器”导入{getSignedUrl};
异步函数生成器(s3config,bucket,filename){
设getParams={
桶:桶,
关键字:文件名
};
让url;
const clientS3=新的S3Client(s3config);
const getCmd=new GetObjectCommand(getParams);
试一试{
url=等待getSignedUrl(客户端3,getCmd);
}捕捉(错误){
log('获取签名URL时出错',err);
}
返回url;
}
我知道web工作者在不同的上下文中运行,无法访问主线程的窗口。我追溯到3.0.0之后的AWS库client-s3,发现(出于某种原因)它假定存在窗口


在web worker中使用S3客户机有什么诀窍吗?还是这是一个bug?

我在AWS dynamodb上成功地将其放在代码的某个地方

if(typeof window != "object")
    self.window = self;

v3现在正在cloudflare上运行。

您就是@JohnnyRivers的人,这绝对解决了问题!为了让其他人发现这一点,我们应该澄清,当您说“代码中的某个地方”时,您的意思是“web worker模块中的某个地方”,因为分配必须位于web worker的上下文中,该上下文与主线程分离。FWIW我在模块外部声明
window
的尝试失败,并且不理解
self.window
满足库调用中访问
window
的尝试。请注意,此问题在@aws sdk/client-s3版本3.12.0中已修复,因此这已成为一个非问题。