我正在AWS Lambda上运行视频处理脚本。

尽管它似乎可以在本地完美运行(使用lambda-local测试),但是当它在Lambda上运行时却遇到了一个奇怪的问题:

{
  "errorMessage": "Cannot find module 'fluent-ffmpeg'",
  "errorType": "Error",
  "stackTrace": [
    "Function.Module._resolveFilename (module.js:338:15)",
    "Function.Module._load (module.js:280:25)",
    "Module.require (module.js:364:17)",
    "require (module.js:380:17)",
    "Object.<anonymous> (/var/task/processing.js:2:14)",
    "Module._compile (module.js:456:26)",
    "Object.Module._extensions..js (module.js:474:10)",
    "Module.load (module.js:356:32)",
    "Function.Module._load (module.js:312:12)",
    "Module.require (module.js:364:17)"
  ]
}


我要上传的ZIP包含以下文件:

~$ find . -maxdepth 2
.
./bin
./bin/ffmpeg
./config.js
./event-samples
./event-samples/custom.js
./event-samples/dynamodb-update.js
./event-samples/kinesis.js
./event-samples/s3-put.js
./frames
./Gulpfile.js
./index.js
./node_modules
./node_modules/async
./node_modules/aws-sdk
./node_modules/fluent-ffmpeg
./node_modules/gulp
./node_modules/gulp-awslambda
./node_modules/gulp-zip
./package.json
./processing.js
./utils.js


(越野车需求位于processing.js中)

如果我打开ZIP,则node_modules/fluent-ffmpeg/*确实存在。

我尝试使用以下方式包含该模块:


require("./node_modules/fluent-ffmpeg/index")
require(__dirname + "./node_modules/fluent-ffmpeg/index")
require(process.env.LAMBDA_TASK_ROOT + "/node_modules/fluent-ffmpeg/index")


但是这些都不能解决问题。我还尝试在我的计算机rm -rf node_modulesnpm install上重新安装node和npm(以防万一)。

由于Lambda运行Node 0.10.36,所以我也尝试在计算机上使用此版本来执行npm install,但这也没有任何改变。

帮助表示赞赏。

谢谢!

最佳答案

解决了。我的开发计算机运行Windows 7,这显然是导致问题的原因……不过,对这些原因很感兴趣。

无论如何,在Linux安装上运行npm install并将代码上传到Lambda可以解决问题。

07-24 09:38
查看更多