我尝试通过在单独的文件中配置AWS来将DynamoDB与Alexa SDK一起使用。
我通过在index.js
中配置AWS来测试我的Alexa技能是否有效:
const Alexa = require("alexa-sdk");
const AWS = require("aws-sdk");
setupDynamoDB();
// my code ...
function setupDynamoDB (alexa) {
AWS.config.update({
region: 'us-east-1',
endpoint: 'http://localhost:8000'
});
}
我认为如果我在其他地方创建setupDynamoDB()
函数并导入它会更有趣,所以我尝试了。
index.js :
const Alexa = require("alexa-sdk");
const AWS = require("./dynamodb").setupDynamo();
dynamodb.js :
const AWS = require("aws-sdk");
module.exports = {
setupDynamo: function (alexa) {
AWS.config.update({
region: 'us-east-1',
endpoint: 'http://localhost:8000'
});
}
return AWS;
};
即使使用return
语句,我的技能似乎也无法访问该表,这很奇怪,因为它似乎(至少对我而言)我正在定义一个已配置的AWS对象而不是运行两步流程(定义AWS 然后配置)。
我正在使用bespoken-tools
代理来测试技能,我得到的错误信息是:
get error: {
"message": "Missing region in config",
"code": "ConfigError",
"time": "2017-04-15T08:38:55.858Z"
}
我还没有尝试过,这是否适用于Alexa Simulator,因为我的目标是让它与bst
一起使用。我也试图利用Alexa SDK对DynamoDB的内置支持,因此简化了配置过程(我发现的几乎所有其他资源都创建了一个DynamoDB
对象,我没有&#39 ;打算这样做。)
我在这里做错了什么?我能提出的唯一解释是,返回的AWS对象与我在setupDynamoDB()
内定义并调用index.js
时将返回的对象不同。但我无法弄清楚为什么会这样。
return
AWS
对象的return
不起作用,但声明{em>和 Alexa
const Alexa = require("./dynamodb").setupDynamo();
对象会起作用。请参阅下面的代码。
index.js :
exports.setupDynamo = function (alexa) {
const AWS = require("aws-sdk");
AWS.config.update({
region: "us-east-1",
endpoint: "http://localhost:8000"
});
const Alexa = require("alexa-sdk");
return Alexa
};
dynamodb.js :
AWS
基本上,return
对象的更新配置在rand()
编辑时丢失。这是预期的行为吗?
答案 0 :(得分:1)
我认为问题在于您的通话顺序。如果你在调用require('alexa-sdk')之前调用setupDynamo,那么它应该可以工作。
alexa-sdk立即开始使用Dynamo,因此需要先进行任何配置更改。