Npm 构建节点JS Lambda-相同源,不同SHA哈希

Npm 构建节点JS Lambda-相同源,不同SHA哈希,npm,aws-lambda,node-modules,terraform,circleci,Npm,Aws Lambda,Node Modules,Terraform,Circleci,我有一个有趣的问题,我不能指出原因。故事是这样的 我的目标是使用Terraform管理Lambda函数,使用CircleCI作为编排器。流程如下所示: GitHub repository->CircleCI build(npm安装和压缩)->aws s3将zip同步到s3->Terraform从s3获取zip->如果SHA不同,则部署到Lambda 只要有一个小问题,一切都很好。如果我运行整个过程两次,GitHub存储库中没有任何更改,Terraform总是报告新的SHA哈希: 源代码散列:“m

我有一个有趣的问题,我不能指出原因。故事是这样的

我的目标是使用Terraform管理Lambda函数,使用CircleCI作为编排器。流程如下所示:

GitHub repository->CircleCI build(npm安装和压缩)->aws s3将zip同步到s3->Terraform从s3获取zip->如果SHA不同,则部署到Lambda

只要有一个小问题,一切都很好。如果我运行整个过程两次,GitHub存储库中没有任何更改,Terraform总是报告新的SHA哈希:

源代码散列:“mx56e7pMbBdftYHes+pETvjFZInvKsP92vtZ5URqyJY=“=>”dhe66opfifDLEr7wI+Ie9UE6ioUiG8hTajuPhctA+W0=”

问题似乎出在
npm安装过程的某个地方,它可能总是做一些稍微不同的事情,因此结果也不同。我不认为ZIPing文件夹会引起麻烦,它很简单
zip-r file.zip*


请对此行为进行任何解释?

npm安装(版本4或更低)是不确定的,因此不能保证您在不同版本中的
npm安装将是相同的

npm
用版本5的
package lock.json
解决了这个问题。请使用最新版本的
npm
重试


或者,您可以尝试
纱线
pnpm
。两者都是旨在使用确定性安装的可选软件包管理器。

您是否使用相同的ZIP文件进行了测试?你有包锁文件吗?我承认我不知道你所说的“测试”和“包锁文件”是什么意思。我只需运行
npm安装
,然后运行
npm测试
,然后运行
zip-r file.zip*
,结果被发送到S3存储桶。尝试向zip文件添加
——无需额外的
参数。