AWS SDK V3 S3Client in web worker throws ReferenceError: window is not defined
AWS SDK V3 S3Client in web worker throws ReferenceError: window is not defined
在 Vue JS 应用程序中,我使用 Web Worker 生成签名 URL。此代码使用 @aws-sdk/client-s3
版本 3.0.0 没有问题。但是,更高版本的 getSignedUrl()
调用失败,错误为“ReferenceError: window is not defined
”。
(worker.js)
import { S3Client, GetObjectCommand } from '@aws-sdk/client-s3';
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
async function generateUrls(s3config, bucket, filename) {
let getParams = {
Bucket: bucket,
Key: filename
};
let url;
const clientS3 = new S3Client(s3config);
const getCmd = new GetObjectCommand(getParams);
try {
url = await getSignedUrl(clientS3, getCmd);
} catch (err) {
console.log('Error getting signed URL ', err);
}
return url;
}
我知道 web worker 运行 在不同的上下文中并且无法访问主线程的 window。我在 3.0.0 之后追踪到 AWS 库 client-s3 并看到(出于某种原因)它假设存在 window.
在 Web Worker 中使用 S3 客户端是否有一些技巧或者这是一个错误?
通过将它放在代码的某处,它在 AWS dynamodb 上对我有用
if(typeof window != "object")
self.window = self;
v3 现在正在 cloudflare 上工作。
在 Vue JS 应用程序中,我使用 Web Worker 生成签名 URL。此代码使用 @aws-sdk/client-s3
版本 3.0.0 没有问题。但是,更高版本的 getSignedUrl()
调用失败,错误为“ReferenceError: window is not defined
”。
(worker.js)
import { S3Client, GetObjectCommand } from '@aws-sdk/client-s3';
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
async function generateUrls(s3config, bucket, filename) {
let getParams = {
Bucket: bucket,
Key: filename
};
let url;
const clientS3 = new S3Client(s3config);
const getCmd = new GetObjectCommand(getParams);
try {
url = await getSignedUrl(clientS3, getCmd);
} catch (err) {
console.log('Error getting signed URL ', err);
}
return url;
}
我知道 web worker 运行 在不同的上下文中并且无法访问主线程的 window。我在 3.0.0 之后追踪到 AWS 库 client-s3 并看到(出于某种原因)它假设存在 window.
在 Web Worker 中使用 S3 客户端是否有一些技巧或者这是一个错误?
通过将它放在代码的某处,它在 AWS dynamodb 上对我有用
if(typeof window != "object")
self.window = self;
v3 现在正在 cloudflare 上工作。