错误:uncaughtException:未定义primordials

时间:2020-11-03 06:12:24

标签: javascript node.js amazon-s3 npm bucket

我使用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
};

2 个答案:

答案 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只是一个文件,因此您也可以复制到您的项目中。

这就是我能够开始工作的地方:

  1. 首先更新您的部门
npm uninstall aws-s3-zipper
npm install @auth0/s3 archiver
  1. 将aws-s3-zipper中的index.js source code复制到项目中的新文件中,例如./aws-s3-zipper.js

  2. 更新文件中的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");
  1. 最后,解决您复制下来的./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",

它为我解决了