AWS Lambda导出类在node.js v6.4中工作,但在node.js v4.3中没有,如何解决这个问题?

时间:2016-10-30 16:17:38

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

我的代码在node.js v6.4中有效: 只有两个文件,index.js:

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

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

  exports.Event = Event

和event.js:

index.handler

在使用版本node.js 4.3的AWS Lambda上运行 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

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

出了问题

是否有一些技巧可以解决这个问题。

我是node.js的新手。

任何帮助都应该受到赞赏。

我认为这不是带有{{1}}

的SyntaxError

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

enter image description here

1 个答案:

答案 0 :(得分:4)

我原本以为箭头功能是罪魁祸首。但是,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

希望这会有所帮助......

ORIGINAL(不正确)ANSWER

module.exports =产品

我相信箭头功能:

() => {}

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

See this answer

自4.4.5版本以来,Node.js支持箭头功能

如果您无法更新nodejs版本,则可以替换:

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

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