Node.js 无法部署NodeJS AWS Lambda函数。Object.fs.openSync处出错
因此,直到几天前,我还使用一个简短的shell脚本部署Node.JS AWS Lambda函数,该脚本工作得非常好 现在我不知道为什么或者我做了什么不同,但由于某种原因,每次部署lambda函数后,我现在通过Alexa调用函数时都会出现以下错误:Node.js 无法部署NodeJS AWS Lambda函数。Object.fs.openSync处出错,node.js,amazon-web-services,aws-lambda,alexa,Node.js,Amazon Web Services,Aws Lambda,Alexa,因此,直到几天前,我还使用一个简短的shell脚本部署Node.JS AWS Lambda函数,该脚本工作得非常好 现在我不知道为什么或者我做了什么不同,但由于某种原因,每次部署lambda函数后,我现在通过Alexa调用函数时都会出现以下错误: 19:47:58 module initialization error Error module initialization error Error 19:47:59 START RequestId: 596b2724-68f9-11e8-aaa
19:47:58
module initialization error Error
module initialization error
Error
19:47:59
START RequestId: 596b2724-68f9-11e8-aaa7-d9ff3044ed9d Version: $LATEST
START RequestId: 596b2724-68f9-11e8-aaa7-d9ff3044ed9d Version: $LATEST
19:47:59
module initialization error: Error at Object.fs.openSync (fs.js:646:18)
at Object.fs.readFileSync (fs.js:551:33)
at Object.Module._extensions..js (module.js:662:20)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
module initialization error: Error
at Object.fs.openSync (fs.js:646:18)
at Object.fs.readFileSync (fs.js:551:33)
at Object.Module._extensions..js (module.js:662:20)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
19:47:59
END RequestId: 596b2724-68f9-11e8-aaa7-d9ff3044ed9d
19:47:59
REPORT RequestId: 596b2724-68f9-11e8-aaa7-d9ff3044ed9d
Duration: 218.74 ms Billed Duration: 300 ms
Memory Size: 128 MB Max Memory Used: 20 MB
REPORT RequestId: 596b2724-68f9-11e8-aaa7-d9ff3044ed9d
Duration: 218.74 ms Billed Duration: 300 ms
Memory Size: 128 MB Max Memory Used: 20 MB
现在有一部分让我不知所措,我不知道如何解决这个问题(我想,这可能是我Mac电脑上的本地问题)。
如果我从Lambda函数下载/导出以前可以工作的部署包,然后直接重新加载Zip文件,它就可以工作了
如果我解压缩文件并再次重新压缩,则会出现错误
没有我对代码做任何修改。这就是为什么我想知道我的mac或文件系统上的压缩是否有问题
我通过nvm使用Mac OSX High Sierra,节点6.10/8.10。lambda上的代码使用6.10和8.10运行
如有任何建议,欢迎提出:)
编辑:上次工作提交是在windows PC上完成的。。。我有点担心文件系统的改变是否会破坏压缩/上传。我将尝试深入研究这一点。好的,唯一能够解决这一问题的方法是返回到我在OSX上执行的最后一次提交,忽略我在windows上执行的最后3次提交 似乎在windows上提交时引入了一些路径或编码更改,这些更改在此错误中得到了解决。不幸的是,我无法在提交差异中看到这些
因此,寻找操作系统之间的差异在这里可能很重要。我在过去遇到过Lambda和来自Windows机器的代码的问题。解决方案(对我来说)是从目录外部
chmod-R 644 lambdaDirectory
,修复Windows对权限所做的任何操作。我不知道是什么导致下载/重新加载工作,也许AWS对清单做了什么
我还遇到了来自使用第三方压缩工具的其他机器的zip文件的问题,因为它们将整个目录压缩到一个名为相同的归档文件中,而不仅仅是内容。IE您不希望
lambdaDirectory/
包含在lambdaDirectory.zip中。要解决此问题,请从目录中运行zip-r lambdaDirectory.zip./*
。我们正在将代码的.zip存档上载到AWS Lambda
我们的问题是.zip文件中的文件没有世界可读权限。我也面临同样的问题。这在Windows上对我有效-
导出lambda函数(下载.zip文件)
提取文件
再次压缩那些文件
将此新zip上传到lambda
看起来你的lambda函数与fs
module相关,有错误。嗯,我甚至没有碰那个模块/文件。还有,为什么仅仅通过压缩/解压一个文件会有不同的行为?你试过重新安装那些模块吗?是的,我也安装了一个完整的npm,不幸的是,它没有改变任何东西。