Appmetrics - 在控制台中运行lambda节点Js函数时的模块初始化错误

时间:2017-03-15 23:05:22

标签: node.js lambda elastic-stack

在index.js文件中添加了以下行

var config = {
host: 'http://localhost:9200'
}
var appmetrics = require('appmetrics-elk').monitor(config);

当尝试测试lambda函数时,它表示模块初始化错误,请找到错误的堆栈跟踪

 {
 "errorMessage": "/var/task/node_modules/appmetrics-elk/node_modules/appmetrics/appmetrics.node: invalid ELF header",
 "errorType": "Error",
 "stackTrace": [
 "Object.Module._extensions..node (module.js:434:18)",
 "Module.load (module.js:343:32)",
 "Function.Module._load (module.js:300:12)",
 "Module.require (module.js:353:17)",
 "require (internal/module.js:12:17)",
 "Object. (/var/task/node_modules/appmetrics-elk/node_modules/appmetrics/index.js:27:13)",
 "Module._compile (module.js:409:26)",
 "Object.Module._extensions..js (module.js:416:10)",
 "Module.load (module.js:343:32)"
 ]}

使用最新的appmetrics-elk版本。 任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

您没有提供任何有关您尝试运行此类环境的信息,因此这在黑暗中有点刺痛:

根据ELF Header or installation issue with bcrypt in Docker container(第二个答案),当您在本地构建应用程序然后尝试在Bluemix或Docker等容器或云环境中运行它而不清除{{{}时,可能会发生这种情况。 1}}目录。

node_modules依赖于appmetrics-elk,其中包含本机C代码。当您appmetrics时,您最终会得到一个特定于您的环境的npm i appmetrics-elk。如果您随后将其上传到云或容器(即不同的环境),则二进制文件node_modules/appmetrics-elk/node_modules/appmetrics/appmetrics.node将无法在此处运行。

解决方案是只上传没有appmetrics.node目录的应用程序,并在node_modules中包含对appmetrics-elk的依赖关系。然后容器应该构建一个在该环境中工作的package.json