如何在Alexa技能的Node.js代码中导入axios模块
在Alexa Skills Kit Node.js技能中导入使用axios的实现指引
第一步:安装axios依赖
根据你的开发方式选择对应操作:
- 本地开发后部署(含AWS Lambda部署、Alexa托管部署打包上传的场景)
在项目根目录(package.json所在目录)执行终端命令:npm install axios
执行完成后axios会自动写入package.json的dependencies字段,打包部署时会自动包含该依赖。 - Alexa开发者控制台在线编辑代码
直接在在线编辑器的文件列表中打开package.json,在dependencies配置项中新增一行:"axios": "^1.6.0"
版本号可替换为当前axios的稳定版本,保存后点击部署,控制台会自动安装对应依赖。
第二步:代码中导入axios
根据你项目使用的模块化规范选择对应导入方式:
- CommonJS规范(Alexa Node.js运行时默认支持,绝大多数场景用这个写法即可)
const axios = require('axios'); - ES Module规范(仅当你的package.json中配置了
"type": "module"时使用)import axios from 'axios';
实际技能中使用示例
以下是在意图处理逻辑中调用axios请求第三方接口的完整示例:
const Alexa = require('ask-sdk-core'); const axios = require('axios'); // 示例:查询天气的意图处理 const GetWeatherIntentHandler = { canHandle(handlerInput) { return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest' && Alexa.getIntentName(handlerInput.requestEnvelope) === 'GetWeatherIntent'; }, // 异步处理必须加async关键字 async handle(handlerInput) { let speakContent = '暂时无法获取天气信息'; try { // 调用第三方接口必须加await等待响应返回 const response = await axios.get('https://你的第三方接口地址', { params: { city: '上海' } }); speakContent = `当前上海的气温是${response.data.temp}摄氏度`; } catch (error) { console.error('接口请求失败:', error); } return handlerInput.responseBuilder .speak(speakContent) .getResponse(); } }; // 后续的Handler注册、出口导出等逻辑按原有技能逻辑编写即可
注意事项
- 所有axios异步请求必须搭配
async/await使用,否则会出现接口还没返回,技能就已经结束响应的问题 - 若技能部署在AWS Lambda上,需确保Lambda执行角色开通了外网访问权限,否则axios的公网请求会被阻断
- 不要设置过长的axios超时时间,Alexa技能的响应超时限制为8秒,超过该时间未返回结果会触发技能报错
内容的提问来源于stack exchange,提问作者Gopalakrishnan Iyer
相关产品推荐
相关产品推荐

