【问题标题】:fs.statSync() isn't giving actual BirthTime of the file - NodeJsfs.statSync() 没有提供文件的实际出生时间 - NodeJs
【发布时间】:2023-01-30 14:47:16
【问题描述】:

我正在使用 fs(节点模块)来管理文件。我正在获取文件的创建时间(出生时间)。当我在我的本地机器上运行这个应用程序时,它工作得非常好。但是当我尝试使用 NodeJs Lambda 函数在 EFS 上实现它时,它给出了1970/1/1 0:00:00这不是我创建的文件的实际时间。

var efsDirectory = "/mnt/data/";
var filePath = path.join(efsDirectory, file);
console.log("This file is going to be executed :", file);
var response = fs.statSync(filePath);
let fileBirthTime = response.birthtime;
console.log("File path is : ", filePath);

加入路径后,我的文件路径如下所示文件路径 = /mnt/data/172.807056.json这是文件的实际路径。

在 Cloudwatch 日志中,我得到了这个:

在本地机器上,它工作正常并给出了实际的文件出生时间。你能告诉我为什么我得到这个吗?

【问题讨论】:

  • 任何人都知道 EFS 可能有什么问题吗?

标签: aws-lambda amazon-efs node.js-fs


【解决方案1】:

我在 AWS 转发上发布了同样的问题,一位工程师用以下答案回复了我。如果有人也面临这个问题,请在此处粘贴相同的答案。

您将通过 birthtime 获得此结果,因为大多数 NFS 文件系统(如 EFS)不支持它。即使在 Linux 操作系统上,是否支持此字段也取决于内核和文件系统类型。 EBS 上的 Amazon Linux 2 上的默认文件系统不会向出生时间返回值。但是,最新的 Ubuntu 映像支持它。这就是为什么您会看到在本地运行它和针对 EFS 运行它之间的区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-21
    • 2022-01-06
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    相关资源
    最近更新 更多