You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Alexa Lambda意图处理器中使用Node.js fetch遇await语法错误的解决咨询

解决Alexa Lambda中fetch请求的await语法错误问题

错误原因

await关键字只能在被async标记的函数内部使用,你之前的代码直接在非async环境下使用await,导致语法报错;而不用await时,fetch返回的Promise会异步执行,Lambda可能在请求完成前就结束,所以无法获取结果。

解决方案1:使用async/await规范写法

将你的Alexa意图处理器函数标记为async,然后用await依次处理fetch请求和JSON解析,同时加上错误处理:

const fetch = require('node-fetch');

// 给意图处理器函数添加async关键字
async function handleWeatherIntent() {
  try {
    // 等待fetch请求完成
    const response = await fetch('https://api.weather.gov/points/38.8894,-77.0352');
    // 等待响应解析为JSON
    const weatherData = await response.json();
    
    // 在这里处理返回的数据,比如生成Alexa的响应内容
    console.log(weatherData);
  } catch (error) {
    // 捕获请求或解析过程中的错误
    console.error('HTTP请求失败:', error);
  }
}

// 如果是Lambda的主handler,同样要标记为async
exports.handler = async (event) => {
  // 调用意图处理器
  await handleWeatherIntent();
  // 返回Alexa所需的响应格式
  return {
    // 响应内容...
  };
};

解决方案2:使用完整Promise链式调用

如果不想用async/await,确保所有依赖请求结果的逻辑都放在then链中,同时Lambda handler要返回Promise,避免提前结束:

const fetch = require('node-fetch');

function handleWeatherIntent() {
  return fetch('https://api.weather.gov/points/38.8894,-77.0352')
    .then(res => res.json())
    .then(weatherData => {
      // 处理数据
      console.log(weatherData);
    })
    .catch(error => {
      console.error('请求出错:', error);
    });
}

exports.handler = (event) => {
  // 返回Promise,让Lambda等待请求完成
  return handleWeatherIntent().then(() => {
    return {
      // Alexa响应内容
    };
  });
};

内容的提问来源于stack exchange,提问作者DanL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:12:07