fenghuo/test-correct-creds.js

128 lines
3.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 在项目内运行可以使用现有的AWS SDK依赖
process.chdir('./packages/storage');
async function testWithCorrectCreds() {
console.log('🔍 使用正确的MinIO凭据测试...\n');
// 动态导入AWS SDK
const { S3 } = await import('@aws-sdk/client-s3');
const config = {
endpoint: 'http://localhost:9000',
region: 'us-east-1',
credentials: {
accessKeyId: 'nice1234', // Docker环境变量设置的凭据
secretAccessKey: 'nice1234',
},
forcePathStyle: true,
};
console.log('配置信息:');
console.log('- Endpoint:', config.endpoint);
console.log('- Region:', config.region);
console.log('- Access Key:', config.credentials.accessKeyId);
console.log('- Force Path Style:', config.forcePathStyle);
console.log();
const s3Client = new S3(config);
try {
// 1. 测试基本连接
console.log('📡 测试基本连接...');
const buckets = await s3Client.listBuckets();
console.log('✅ 连接成功!');
console.log('📂 现有存储桶:', buckets.Buckets?.map((b) => b.Name) || []);
console.log();
// 2. 检查test123存储桶
const bucketName = 'test123';
console.log(`🪣 检查存储桶 "${bucketName}"...`);
try {
await s3Client.headBucket({ Bucket: bucketName });
console.log(`✅ 存储桶 "${bucketName}" 存在`);
} catch (error) {
if (error.name === 'NotFound') {
console.log(`❌ 存储桶 "${bucketName}" 不存在,正在创建...`);
try {
await s3Client.createBucket({ Bucket: bucketName });
console.log(`✅ 存储桶 "${bucketName}" 创建成功`);
} catch (createError) {
console.log(`❌ 创建存储桶失败:`, createError.message);
return;
}
} else {
console.log(`❌ 检查存储桶失败:`, error.message);
return;
}
}
// 3. 测试简单上传
console.log('\n📤 测试简单上传...');
const testKey = 'test-file.txt';
const testContent = 'Hello MinIO from correct credentials!';
try {
await s3Client.putObject({
Bucket: bucketName,
Key: testKey,
Body: testContent,
});
console.log(`✅ 简单上传成功: ${testKey}`);
} catch (error) {
console.log(`❌ 简单上传失败:`, error.message);
console.log('错误详情:', error);
return;
}
// 4. 测试分片上传初始化
console.log('\n🔄 测试分片上传初始化...');
const multipartKey = 'test-multipart.txt';
try {
const multipartUpload = await s3Client.createMultipartUpload({
Bucket: bucketName,
Key: multipartKey,
});
console.log(`✅ 分片上传初始化成功: ${multipartUpload.UploadId}`);
// 立即取消这个分片上传
await s3Client.abortMultipartUpload({
Bucket: bucketName,
Key: multipartKey,
UploadId: multipartUpload.UploadId,
});
console.log('✅ 分片上传取消成功');
} catch (error) {
console.log(`❌ 分片上传初始化失败:`, error.message);
console.log('错误详情:', error);
if (error.$metadata) {
console.log('HTTP状态码:', error.$metadata.httpStatusCode);
}
return;
}
console.log('\n🎉 所有测试通过MinIO配置正确。');
console.log('\n📝 下一步: 更新你的.env文件使用以下配置:');
console.log('STORAGE_TYPE=s3');
console.log('S3_ENDPOINT=http://localhost:9000');
console.log('S3_REGION=us-east-1');
console.log('S3_BUCKET=test123');
console.log('S3_ACCESS_KEY_ID=nice1234');
console.log('S3_SECRET_ACCESS_KEY=nice1234');
console.log('S3_FORCE_PATH_STYLE=true');
} catch (error) {
console.log('❌ 连接失败:', error.message);
console.log('错误详情:', error);
if (error.message.includes('ECONNREFUSED')) {
console.log('\n💡 提示:');
console.log('- 确保MinIO正在端口9000运行');
console.log('- 检查docker容器状态: docker ps');
console.log('- 重启MinIO: docker restart minio-container-name');
}
}
}
testWithCorrectCreds().catch(console.error);