Javascript AWS Lambda fs.readfile问题

Javascript AWS Lambda fs.readfile问题,javascript,file,aws-lambda,Javascript,File,Aws Lambda,我正在我的lambda包中打包一些我需要的文件。我已经使用了一些浮动的例子,几乎让它工作 我能够验证文件的路径是否正确 const deviceCert = path.resolve(certType + "-deviceCert.key"); 哪个登录到 "message": "Resolved path to TEST-deviceCert.key: /var/task/TEST-deviceCert.key" 当我尝试使用 fs.readFile(deviceCert, (err, d

我正在我的lambda包中打包一些我需要的文件。我已经使用了一些浮动的例子,几乎让它工作

我能够验证文件的路径是否正确

const deviceCert = path.resolve(certType + "-deviceCert.key");
哪个登录到

"message": "Resolved path to TEST-deviceCert.key: /var/task/TEST-deviceCert.key"
当我尝试使用

fs.readFile(deviceCert, (err, data) => {

    if (err) {

        log.error(`Verify deviceCert failure: ${err}`);
        responseBody = Helper.buildCORSResponse(502, JSON.stringify({ message: "Unable to locate file required" }));

        return callback(null, responseBody);

    }

});
我得到以下错误

Error: ENOENT: no such file or directory, open '/var/task/TEST-deviceCert.key'"
如果我能验证路径,为什么我不能阅读它

任何想法???

从node.js API文档中复制:

resolve方法将一系列路径或路径段解析为绝对路径


换句话说,resolve将字符串序列连接为一个字符串,格式为绝对路径。但是,它不会检查此位置是否存在文件。您可以使用或来验证文件的存在和访问。

最终确认serverless正在打包我需要的文件

使用fs.readdir,我能够调试问题并找到打包过程在Lambda包中创建的路径

/var/task/src//Certs/


希望这对将来的人有帮助

您的应用程序中是否部署了/var/task/TEST-deviceCert.key?我目前正在尝试确认这一点。我怀疑由于某种原因,这些文件没有正确打包。目前正在等待sls包的输出,以便我可以验证我的函数是否在serverless.yml包中定义了以下内容:indivualy:true include:-src/marlin/Certs/**谢谢matsev解决了这一问题并添加了fs.access,但目前仍无法确定文件的正确打包