我使用aws-s3-zipper
安装了npm
,此后,我得到了这个错误。
这是我的代码:
AWS = require("aws-sdk");
var S3Zipper = require("aws-s3-zipper");
function zipFolderOnS3() {
var zipper = new S3Zipper(config);
return new Promise((resolve, reject) => {
var config = {
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
region: process.env.REGION,
bucket: process.env.BUCKET_NAME
};
var zipper = new S3Zipper(config);
try {
zipper.zipToS3FileFragments({
s3FolderName: "Documents"
, MaxFileCount: 50
//, startKey: ‘keyOfLastFileIZipped' // optional
, S3ZipFileName: "Documents.zip",
recursive: true
}, function (err, result) {
if (err) {
console.error(err);
}
else {
console.error("File uploaded on s3");
}
});
} catch (e) {
console.log(e)
}
});
}
module.exports = {
zipFolderOnS3
};
答案 0 :(得分:0)
aws-s3-zipper
依赖于s3
的{{1}} node-s3-client,其依赖项graceful-fs
(当前s3@4.4.0包含的版本)与节点v12有问题/不兼容及以上。
根据this,raceful-fs v4.2.2可与节点12一起使用...
真正需要发生的是,node-s3-client需要更新它们对graceful-fs的依赖性。为此已经有一个open github issue,其中有人建议使用@auth0/s3。
因此,您可以尝试让aws-s3-zipper
切换到使用该版本,直到官方软件包更新为止。或者... aws-s3-zipper
只是一个文件,因此您也可以复制到您的项目中。
这就是我能够开始工作的地方:
npm uninstall aws-s3-zipper
npm install @auth0/s3 archiver
将aws-s3-zipper中的index.js source code复制到项目中的新文件中,例如./aws-s3-zipper.js
。
更新文件中的require语句:
// you can remove the AWS require as it's not actually used at all here
// AWS = require("aws-sdk");
// make this a relative path instead of including the package
var S3Zipper = require("./aws-s3-zipper");
./aws-s3-zipper.js
中的依赖性问题:var assert = require('assert');
var archiver = require('archiver');
var async = require('async');
var AWS = require('aws-sdk');
var fs = require('fs');
// change `s3` to `@auth0/s3`
var s3 = require('@auth0/s3');
// ... the rest of the package
我在aws-s3-zipper
回购中对this GitHub issue进行了评论,认为他们可能遇到相同的问题,并查看它们是否暂时切换到@auth0/s3
。
答案 1 :(得分:0)
将 s3 中的依赖从 graceful-fs": "~3.0.5",
更新为 "graceful-fs": "^4.2.6",
它为我解决了