【发布时间】:2020-10-23 09:38:21
【问题描述】:
我正在尝试使用 AWS SDK JS 删除 api 密钥,但收到以下错误消息:
{
"errorType": "Runtime.UserCodeSyntaxError",
"errorMessage": "SyntaxError: await is only valid in async function",
"stack": [
"Runtime.UserCodeSyntaxError: SyntaxError: await is only valid in async function",
" 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:36:30)",
" at Module._compile (internal/modules/cjs/loader.js:701:30)",
" at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)",
" at Module.load (internal/modules/cjs/loader.js:600:32)",
" at tryModuleLoad (internal/modules/cjs/loader.js:539:12)",
" at Function.Module._load (internal/modules/cjs/loader.js:531:3)",
" at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)",
" at startup (internal/bootstrap/node.js:283:19)"
]
}
我试图创建一个删除的承诺,就像我选择键一样,但我认为在 foreach 中执行它可能是一个问题。
我的代码:
let sendPromise = null;
let params = {
includeValues: true,
limit: 500
};
let dados = null;
sendPromise = new AWS.APIGateway().getApiKeys( params ).promise();
try {
dados = await sendPromise;
} catch(err) {
console.error(err, err.stack);
return criarResposta( 500, `{
"message": "Erro interno"
}` );
}
dados.items.forEach( chave => {
const paramsDeletar = {
apiKey: chave.id
};
sendPromise = new AWS.APIGateway().deleteApiKey( params ).promise();
try {
let dadosDeletar = await sendPromise;
} catch(err) {
console.error( err, err.stack );
return criarResposta( 500, `{
"message": "Erro interno"
}` );
}
});
return criarResposta( 200, JSON.stringify( dados ) );
其他的事情,我需要单独等待我的所有承诺还是有办法等待承诺的捆绑? 我迫不及待地等待我的承诺,因为我正在使用 lambda,但我希望我能让它们一起运行
【问题讨论】:
标签: javascript node.js aws-sdk-js