找不到模块

时间:2018-01-30 12:01:29

标签: node.js aws-lambda alexa-skills-kit

我在亚马逊alexa中做了一个自定义技能,当在AWS中测试Node js代码作为LAMBDA函数时,它给出了以下错误:

{
  "errorMessage": "Cannot find module '/var/task/index'",
  "errorType": "Error",
  "stackTrace": [
    "Function.Module._load (module.js:417:25)",
    "Module.require (module.js:497:17)",
    "require (internal/module.js:20:19)"
  ]
}

以下是代码,它连接到firebase并更新其内容

const firebase = require('firebase');

exports.handler = (event, context, callback) => {
    context.callbackWaitsForEmptyEventLoop = false;  //<---Important

    var config = {
      apiKey: 'AIzaSyBQJasmuj2yzlkuXFwJ5-wL2kt0UMQ2V18',
      authDomain: 'deftdev-a2416.firebaseapp.com',
      databaseURL: 'https://deftdev-a2416.firebaseio.com',
      storageBucket: 'deftdev-a2416.appspot.com'
    };
    //firebase.initializeApp(firebaseConfig);

    //const db = firebase.database();

    if(firebase.apps.length == 0) {   // <---Important!!! In lambda, it will cause double initialization.
        firebase.initializeApp(config);
    }

    firebase.database().ref('rooms/' +'HPOQhC9smxUxSGhM1XlBtweiNDE3/'+'roomdetails/01/1/appliance/0/'+).update({
        toggle:1
    });
};

3 个答案:

答案 0 :(得分:1)

如果它是Index.js,只需检查入口点文件名的名称,然后在AWS Lambda函数入口点中指定相同的名称。这将有助于

答案 1 :(得分:0)

主要是因为压缩文件导致问题的方式。不必压缩根文件夹,而是必须选择所有文件并将其压缩如下,

请上传包含node_modules文件夹的所有文件和文件夹(如果有)

enter image description here

答案 2 :(得分:0)

为了在使用无服务器框架之类的东西时的完整性,如果您使用比AWS支持的更高版本的节点在本地安装节点模块,则会出现非常类似的错误。

解决方案是确保在执行npm i时使用与Lambda相同的节点/ npm版本