У меня была старая AWS лямбда-функция, которая была объявлена как синхронная (использованные обещания), объявление выглядело так:
exports.getSong = (event, context, callback) => { }
Работало, как задумано. Недавно я решил переписать его с помощью async / await и, таким образом, попытался объявить функцию getSong
асинхронно, например:
exports.getSong = async (event, context) => { }
И при попытке выполнить я получаю в нем следующую ошибку Totty:
{
"errorType": "Runtime.UserCodeSyntaxError",
"errorMessage": "SyntaxError: Unexpected token '.'",
"trace": [
"Runtime.UserCodeSyntaxError: SyntaxError: Unexpected token '.'",
" at _loadUserApp (/var/runtime/UserFunction.js:98:13)",
" at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
" at Object.<anonymous> (/var/runtime/index.js:43:30)",
" at Module._compile (internal/modules/cjs/loader.js:1133:30)",
" at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)",
" at Module.load (internal/modules/cjs/loader.js:977:32)",
" at Function.Module._load (internal/modules/cjs/loader.js:877:14)",
" at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)",
" at internal/main/run_main_module.js:18:47"
]
}
Из этого сообщения об ошибке совершенно не ясно, в чем проблема, но, поискав в Google похожие проблемы и сузив все, я понял, что проблема заключается в объявлении функции.
Я попытался объявить функцию getSong
как синхронную, а затем запустить внутри нее другую асинхронную функцию, например:
var anotherAsyncFunction = async () => { }
exports.getSong = (event, context, callback) => { anotherAsyncFunction() }
Но затем я получаю ту же ошибку. Итак, ясно, что это как-то связано с объявлением асинхронной функции внутри Lambda. В чем может быть проблема? Спасибо.