我有一个 nodeJs 脚本,想在执行过程中休眠。
我创建了一个本地 npm 包和一个项目。项目目录如下。
[ec2-user@ip-local lambdaTestFunction]$ ls -ltr
total 888
drwx------. 8 ec2-user ec2-user 98 Nov 13 11:22 node_modules
-rwxr-xr-x. 1 ec2-user ec2-user 510 Nov 13 13:51 index.js
-rw-------. 1 ec2-user ec2-user 899230 Nov 13 13:51 index.zip
[ec2-user@ip-local lambdaTestFunction]$
我已压缩 node_modules 和 index.js 并将它们压缩为 index.zip
node_modules 包含以下内容
[ec2-user@ip-local lambdaTestFunction]$ cd node_modules/
[ec2-user@ip-local node_modules]$ ls -ltr
total 12
drwx------. 2 ec2-user ec2-user 73 Nov 13 11:22 deasync-promise
drwx------. 2 ec2-user ec2-user 59 Nov 13 11:22 bindings
drwx------. 2 ec2-user ec2-user 71 Nov 13 11:22 system-sleep
drwx------. 4 ec2-user ec2-user 4096 Nov 13 11:22 nan
drwx------. 4 ec2-user ec2-user 4096 Nov 13 11:22 deasync
drwx------. 3 ec2-user ec2-user 4096 Nov 13 11:22 sleep
[ec2-user@ip-local node_modules]$
当我在本地执行脚本 index.js 时,它运行良好,如下所示。
[ec2-user@ip-local lambdaTestFunction]$ node index.js
starting the function
start before wait
after 5 mins
[ec2-user@ip-local lambdaTestFunction]$
但是当我将 zip 导出到 lambda 函数时,执行失败并显示消息
{
"errorMessage": "Cannot find module 'index/node_modules/sleep'",
"errorType": "Error",
"stackTrace": [
"Module.require (module.js:497:17)",
"require (internal/module.js:20:19)",
"Object.<anonymous> (/var/task/index/index.js:2:13)",
"Module._compile (module.js:570:32)",
"Object.Module._extensions..js (module.js:579:10)",
"Module.load (module.js:487:32)",
"tryModuleLoad (module.js:446:12)",
"Function.Module._load (module.js:438:3)"
]
}
index.js 的内容如下
console.log("starting the function");
var sleep = require('sleep');
console.log("start before wait");
sleep.sleep(5); // 5 seconds
console.log("after 5 mins");
exports.handler = (event, context, callback) => {
// TODO implement
//callback(null, 'Hello from Lambda');
console.log("start before wait");
//sleep.sleep(5); // 5 seconds
// //setTimeout(function(){ alert("Hello"); }, 3000);
console.log("after 5 mins");
callback(null, 'Hello from Lambda after 5 sec');
};
我不确定我还缺少什么。