lambda 找不到我的 node_modules
lambda not finding my node_modules
我正在尝试使用我的 lambda 上传 node_modules,但出现 "Cannot find module"
错误。
我已经用
设置了一个真正简单的 hello world js 文件
var async = require('async');
我已经手动将 node_modules/async
文件夹复制到分发版中 - 我复制了 node_modules 文件夹以及 hello world js 文件。
我用我的照片缩放器 lambda 做了非常相似的事情,它也采用节点模块并且工作正常。我做错了什么不同?
zip 文件的结构很重要。假设我有一个 javascript 函数包含在一个名为 foo.js
的文件中,该文件依赖于其他节点模块。
在我的开发环境中,我会有这样的结构:
devdir/
foo/
foo.js
node_modules/
<the nodejs modules>
然后我创建一个名为 foo.zip
的 zip 文件,结构如下:
$ unzip -vl foo.zip
Archive: foo.zip
Length Method Size Ratio Date Time CRC-32 Name
------- ------ ------- ----- ---- ---- ------ ----
0 Defl:N 0 0% 08-05-15 14:44 00000000 ./
3047 Defl:N 981 68% 08-05-15 14:25 06e3e178 foo.js
0 Defl:N 0 0% 08-03-15 13:37 00000000 node_modules/
0 Defl:N 0 0% 08-03-15 13:37 00000000 node_modules/.bin/
597 Defl:N 301 50% 03-05-15 14:29 9b0c2ba2 node_modules/.bin/uuid
0 Defl:N 0 0% 07-16-15 08:32 00000000 node_modules/async/
3454 Defl:N 1537 56% 06-28-15 18:37 967a5404 node_modules/async/CHANGELOG.md
<...>
确保您的 zip 文件结构如下,您应该没问题。
我把它放在这里作为备选答案。我花了整个下午试图让我的模块在 Lambda 中达到 运行。我的结构与另一个答案中所示的结构相同,但不断收到 "Cannot find module" 错误或 Object.fs.readFileSync 错误。事实证明,在压缩之前确保所有 js 文件都是可执行的是我遗漏的重要步骤。这也可能对 chown
所有文件给您自己也有好处。
sudo chmod +x *.js -R
sudo chown myself.myself * -R
zip -r lambda.zip .
然后上传lambda.zip
包并测试。
我正在尝试使用我的 lambda 上传 node_modules,但出现 "Cannot find module"
错误。
我已经用
设置了一个真正简单的 hello world js 文件var async = require('async');
我已经手动将 node_modules/async
文件夹复制到分发版中 - 我复制了 node_modules 文件夹以及 hello world js 文件。
我用我的照片缩放器 lambda 做了非常相似的事情,它也采用节点模块并且工作正常。我做错了什么不同?
zip 文件的结构很重要。假设我有一个 javascript 函数包含在一个名为 foo.js
的文件中,该文件依赖于其他节点模块。
在我的开发环境中,我会有这样的结构:
devdir/
foo/
foo.js
node_modules/
<the nodejs modules>
然后我创建一个名为 foo.zip
的 zip 文件,结构如下:
$ unzip -vl foo.zip
Archive: foo.zip
Length Method Size Ratio Date Time CRC-32 Name
------- ------ ------- ----- ---- ---- ------ ----
0 Defl:N 0 0% 08-05-15 14:44 00000000 ./
3047 Defl:N 981 68% 08-05-15 14:25 06e3e178 foo.js
0 Defl:N 0 0% 08-03-15 13:37 00000000 node_modules/
0 Defl:N 0 0% 08-03-15 13:37 00000000 node_modules/.bin/
597 Defl:N 301 50% 03-05-15 14:29 9b0c2ba2 node_modules/.bin/uuid
0 Defl:N 0 0% 07-16-15 08:32 00000000 node_modules/async/
3454 Defl:N 1537 56% 06-28-15 18:37 967a5404 node_modules/async/CHANGELOG.md
<...>
确保您的 zip 文件结构如下,您应该没问题。
我把它放在这里作为备选答案。我花了整个下午试图让我的模块在 Lambda 中达到 运行。我的结构与另一个答案中所示的结构相同,但不断收到 "Cannot find module" 错误或 Object.fs.readFileSync 错误。事实证明,在压缩之前确保所有 js 文件都是可执行的是我遗漏的重要步骤。这也可能对 chown
所有文件给您自己也有好处。
sudo chmod +x *.js -R
sudo chown myself.myself * -R
zip -r lambda.zip .
然后上传lambda.zip
包并测试。