【问题标题】:Cannot deploy a NodeJS AWS Lambda Function. Error at Object.fs.openSync无法部署 NodeJS AWS Lambda 函数。 Object.fs.openSync 出错
【发布时间】:2018-11-17 03:22:24
【问题描述】:

所以直到几天前,我一直通过一个简短的 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-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 上完成的...我有点担心文件系统更改是否会以某种方式破坏压缩/上传。我会尝试对此进行更深入的研究。

【问题讨论】:

  • 看起来您的 lambda 函数与 fs 模块相关的错误。
  • 嗯,我什至没有碰那个模块/文件。另外,为什么仅仅通过压缩/解压缩文件会有不同的行为?
  • 您是否尝试重新安装这些模块?
  • 是的,我也进行了完整的 npm 安装,但遗憾的是没有改变任何东西。

标签: node.js amazon-web-services aws-lambda alexa


【解决方案1】:

我们正在将代码的 .zip 存档上传到 AWS Lambda。

我们的问题是 .zip 文件中的文件没有世界可读的权限。

【讨论】:

    【解决方案2】:

    好的,唯一能够解决这个问题的方法是回到我在 OSX 上所做的最后一次提交,并忽略我在 Windows 上所做的最后 3 次提交。

    看起来有一些路径或编码更改是通过在已解决此错误的 Windows 上提交而引入的。不幸的是,我在提交差异中看不到那些。

    因此在这里寻找操作系统之间的差异可能很重要。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。这在 Windows 上对我有用-

      1. 导出 lambda 函数(下载 .zip 文件)
      2. 解压文件
      3. 再次压缩这些文件
      4. 将此新 zip 上传到 lambda

      【讨论】:

        【解决方案4】:

        过去,我在 Lambda 和 Windows 机器上的代码中遇到过问题。解决方案(对我来说)是从目录外部chmod -R 644 lambdaDirectory,修复 Windows 对权限所做的任何事情。我不知道什么会导致下载/重新上传工作,也许 AWS 正在对清单做些什么?

        我也遇到了来自使用第三方压缩工具的其他机器的 zip 文件的问题,因为它们将整个目录压缩到一个名称相同的存档中,而不仅仅是内容。 IE 你不希望lambdaDirectory/ 包含在你的lambdaDirectory.zip 中。要解决此问题,请从目录中运行 zip -r lambdaDirectory.zip ./*

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-28
          • 2017-06-19
          • 1970-01-01
          • 2021-10-05
          • 2023-03-09
          • 2020-07-07
          相关资源
          最近更新 更多