Javascript-AWS Lambda导出类可在node.js v6.4中使用,但不能在node.js v4.3中使用,如何解决此问题?
作者:互联网
这个问题已经在这里有了答案: > Node.js support for => (arrow function) 4个
我的代码在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的新手.
任何帮助,不胜感激.
我认为这不是带有(事件,上下文,回调)=>的SyntaxError. {}
由于AWS Lambda示例代码在使用此语法时运行良好:
解决方法:
我最初认为箭头功能是元凶.但是,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)中尚未实现.
自版本4.4.5起,Node.js支持箭头功能.
如果您不可以选择更新nodejs版本,则可以替换为:
exports.handler = (event, context, callback) => {
console.log('done');
}
与
exports.handler = (event, context, callback) = function() {
console.log('done');
}
标签:node-js,amazon-web-services,aws-lambda,javascript,lambda 来源: https://codeday.me/bug/20191026/1937472.html