本文介绍了AWS Lambda导出类可在node.js v6.4中使用,但不能在node.js v4.3中使用,如何解决此问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有代码可以在node.js v6.4中使用:只有两个文件index.js:

I have code works in node.js v6.4:just two files, 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时,会引发错误:

when run index.handler on AWS Lambda which use version node.js 4.3, it throws a error:

  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有点问题,

有一些技巧可以解决此问题.

Is there some trick to fix this.

我是node.js的新手.

I'm new to node.js.

任何帮助都应得到赞赏.

Any help should be appreciated.

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

由于AWS Lambda示例代码在此语法下运行良好:

Because AWS Lambda sample code runs well with this Syntax:

推荐答案

我本来以为箭头功能是罪魁祸首.但是,如本关于Lambda上Node.js 4.3.2运行时的文章.

I originally thought the arrow function was the culprit. However, AWS Node.js 4.3.2 DOES support the arrow function, as mentioned in this post about Node.js 4.3.2 Runtime on Lambda.

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

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

You must use strict mode for a class declaration in node.js 4.3.2

有关严格模式的Mozilla开发人员网络

希望这会有所帮助...

Hoping this will help...

module.exports =产品

module.exports = Products

我相信箭头功能:

() => {}

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

is not yet implemented in the nodejs version you are using (4.3).

查看此答案

自版本4.4.5起,Node.js中支持箭头功能

Arrow functions are supported in Node.js since version 4.4.5

如果您不希望更新nodejs版本,则可以替换:

If updating your nodejs version is not an option for you, you could replace:

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

使用

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

这篇关于AWS Lambda导出类可在node.js v6.4中使用,但不能在node.js v4.3中使用,如何解决此问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 13:58