gpt4 book ai didi

javascript - grunt/npm 插件 grunt-s3 + knox 未上传到 S3

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:13 25 4
gpt4 key购买 nike

我正在尝试将 S3 部署步骤集成到我的 Grunt 工具链中,以将新构建的文件上传到 AWS。然而,该步骤总是默默地失败(声称成功但没有执行任何操作),并且在调试结果时我发现了一些被挂起的不同点。我使用 grunt-s3 作为处理 grunt 命令的包,它反过来调用包装 Amazon S3 API 的 knox 包。

这就是事情崩溃的地方:

1) 逻辑中有一个点,knox 使用 fs 包尝试通过 fs.stat(file,callback) 获取要上传的文件的大小。据我所知,该进程在 fs.stat 调用和调用回调之间的 node.js 层下的某个位置终止。我在回调逻辑中的各处设置了断点和“调试器”语句,并且在调用 fs.stat() 后, Node 检查器和 IntelliJ 调试器似乎都无法捕获该进程。

2) 如果我破解 knox 插件并将 fs.stat 调用更改为 fs.statSync(),该过程将成功向前推进。但是,在此过程的稍后部分,我可以看到 knox 使用 S3 设置了预期的 PUT URL 来上传文件,然后调用 stream.pipe() 来上传文件。 Stream.pipe() 调用似乎没有发生任何事情,并且我在 WireShark 上看不到任何表明我的计算机和 AWS 之间正在发生上传的事件。但是,如果我使用命令行工具 s3cmd 进行上传,文件上传正常。

我准备在这一步中放弃 grunt 并直接调用 s3cmd,但如果可能的话,我很乐意以 grunt 方式执行此操作。有人对这两个步骤中可能发生的事情有什么建议吗?

谢谢!

最佳答案

你坐在我的代理后面吗?如果是这样,knox 将无法工作。如果没有,你的 s3-config 是什么样的?

另一个需要注意的重要事项是您的存储桶的位置。手动设置区域(在我的示例中为“eu-west-1”)对我有帮助,因为诺克斯默认将区域设置为“us-standard”。查看可能值的列表 here ,检查您所在的存储桶属性,然后手动设置该值!

这是(对我来说)工作配置:

s3: {
options: {
key: "my-key",
secret: "my-secret",
access: "public-read",
bucket: "my-bucket",
region: "eu-west-1"
},
mysubtask: {
upload: [
{
src: "src/*.js",
dest: "/dist/",
gzip: true,
headers: {
'Content-Type': 'application/javascript; charset=utf-8'
}
}
]
}

}

关于javascript - grunt/npm 插件 grunt-s3 + knox 未上传到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17172007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com