javascript - AWS Lambda 导出类在 node.js v6.4 中有效,但在 node.js v4.3 中无效,如何解决这个问题?

标签 javascript node.js amazon-web-services lambda aws-lambda

<分区>

我的代码适用于 node.js v6.4: 只有两个文件,index.js:

  // ------------ Index.js ------------ 
  'use strict';

  var Event = require('./models/event.js');

  exports.handler = (event, context, callback) => {
     console.log('done');
  }

和 event.js:

  // ------------ Event.js ------------ 

  class Event {
    static get dynamoDBTableName() {
      return
    }
    get hashValue() {
      return
    }
    parseReference(reference) {
      return
    }
  }

  exports.Event = Event

在使用 node.js 4.3 版本的 AWS Lambda 上运行 index.handler 时,会抛出错误:

  Syntax error in module 'index': SyntaxError
  at exports.runInThisContext (vm.js:53:16)
  at Module._compile (module.js:373:25)
  at Object.Module._extensions..js (module.js:416:10)
  at Module.load (module.js:343:32)
  at Function.Module._load (module.js:300:12)
  at Module.require (module.js:353:17)
  at require (internal/module.js:12:17)
  at Object.<anonymous> (/var/task/index.js:16:13)
  at Module._compile (module.js:409:26)
  at Object.Module._extensions..js (module.js:416:10)

我认为 exports.Event = Event 有问题,

有什么技巧可以解决这个问题。

我是 node.js 新手。

如有任何帮助,我们将不胜感激。

我认为这不是 (event, context, callback) => { }

的 SyntaxError

因为 AWS Lambda 示例代码使用此语法运行良好:

enter image description here

最佳答案

我原本以为箭头函数是罪魁祸首。但是,AWS Node.js 4.3.2 确实支持箭头功能,如本 post about Node.js 4.3.2 Runtime on Lambda 中所述.


新(正确)答案

event.js文件是否以'use strict';开头?

在 node.js 4.3.2 中你必须对类声明使用严格模式

Mozilla Developer Network about strict mode

希望这会有所帮助...


原始(不正确)答案

module.exports = 产品

我相信箭头函数:

() => {}

尚未在您使用的 nodejs 版本 (4.3) 中实现。

See this answer

Node.js 从 4.4.5 版本开始支持箭头函数


如果更新您的 nodejs 版本不适合您,您可以替换:

  exports.handler = (event, context, callback) => {
    console.log('done');
  }

  exports.handler = (event, context, callback) = function() {
     console.log('done');
}

关于javascript - AWS Lambda 导出类在 node.js v6.4 中有效,但在 node.js v4.3 中无效,如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40331059/

相关文章:

javascript - 不支持 svg 的浏览器的 CSS hack

javascript - jQuery 函数和页面重新加载问题(也许)

javascript - 多个 javascript 上传按钮只将内容放在一个

ios - 使用 Express 连接到 Amazon RDS

amazon-web-services - 使用 boto3 invoke() 时获取 AWS Lambda 响应

javascript - 更改marked.js图像/链接表达式

node.js - 使用 fluent-ffmpeg 添加字幕

mysql - Socket.io 命名空间在 10 个连接后停止工作

node.js - 在cloud9.io中发送邮件

amazon-web-services - 如何从 s3 bucket 读取数据到 Kinesis Stream