首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用Dynamoose在本地DynamoDB上运行Chai时,配置中缺少区域

尝试使用Dynamoose在本地DynamoDB上运行Chai时,配置中缺少区域
EN

Stack Overflow用户
提问于 2018-05-09 18:58:34
回答 1查看 1.2K关注 0票数 0

我正在使用Restify,并且正在尝试学习如何编写我的CRUD方法的测试。当我连接到DynamoDB时,我可以在Postman上测试它们,没有任何问题。对于测试,我将连接到我的本地DynamoDB,它在localhost:8000上运行。

server.listen上,我有这样的设置:

代码语言:javascript
复制
dynamoose.AWS.config.update({
  accessKeyId: config.db.aws_access_key_id,
  secretAccessKey: config.db.aws_secret_access_key,
  region: config.db.aws_region
});

if (config.env == "test") {
  dynamoose.local();
}

(我也尝试过调用上述更新中的dynamoose.local() )

当我使用mocha --timeout 10000命令运行测试时,我得到以下错误:

代码语言:javascript
复制
1) Uncaught error outside test suite:
     Uncaught ConfigError: Missing region in config
      at Request.VALIDATE_REGION (node_modules/aws-sdk/lib/event_listeners.js:91:45)
      at Request.callListeners (node_modules/aws-sdk/lib/sequential_executor.js:105:20)
      at callNextListener (node_modules/aws-sdk/lib/sequential_executor.js:95:12)
      at /Users/username/Development/projectname-api/node_modules/aws-sdk/lib/event_listeners.js:85:9
      at finish (node_modules/aws-sdk/lib/config.js:320:7)
      at /Users/username/Development/projectname-api/node_modules/aws-sdk/lib/config.js:338:9
      at SharedIniFileCredentials.get (node_modules/aws-sdk/lib/credentials.js:126:7)
      at getAsyncCredentials (node_modules/aws-sdk/lib/config.js:332:24)
      at Config.getCredentials (node_modules/aws-sdk/lib/config.js:352:9)
      at Request.VALIDATE_CREDENTIALS (node_modules/aws-sdk/lib/event_listeners.js:80:26)
      at Request.callListeners (node_modules/aws-sdk/lib/sequential_executor.js:101:18)
      at Request.emit (node_modules/aws-sdk/lib/sequential_executor.js:77:10)
      at Request.emit (node_modules/aws-sdk/lib/request.js:683:14)
      at Request.transition (node_modules/aws-sdk/lib/request.js:22:10)
      at AcceptorStateMachine.runTo (node_modules/aws-sdk/lib/state_machine.js:14:12)
      at Request.runTo (node_modules/aws-sdk/lib/request.js:403:15)
      at Request.send (node_modules/aws-sdk/lib/request.js:367:10)
      at features.constructor.makeRequest (node_modules/aws-sdk/lib/service.js:193:27)
      at features.constructor.svc.(anonymous function) [as describeTable] (node_modules/aws-sdk/lib/service.js:499:23)
      at Table.describe (node_modules/dynamoose/lib/Table.js:339:7)
      at Table.init (node_modules/dynamoose/lib/Table.js:141:10)
      at Function.compile (node_modules/dynamoose/lib/Model.js:201:9)
      at Dynamoose.model (node_modules/dynamoose/lib/index.js:39:21)
      at Object.<anonymous> (models/modelName.js:63:35)
      at require (internal/module.js:11:18)
      at Object.<anonymous> (test/testFileName.js:4:25)
      at require (internal/module.js:11:18)
      at Array.forEach (<anonymous>)
      at startup (bootstrap_node.js:188:16)
      at bootstrap_node.js:609:3

现在我知道这是一个问题,因为dynamoose不能配置区域。但是,当我在开发中运行它时,使用相同的代码没有任何问题。在我的配置文件中,我也有相同的DB配置。我通过在if (config.env == "test")中添加console.log(config.db)来验证这一点。所以我认为应该对其进行配置。

如果需要的话,下面是我的测试:

代码语言:javascript
复制
describe('ModelName', () => {
  beforeEach((done) => {
    ModelName.delete({}, (err) => {
      done();
    });
  });

  describe('/GET modelName', () => {
    it('it should GET all the model-name instances', (done) => {
      chai.request(server)
        .get('/model-name')
        .end((err, res) => {
            res.should.have.status(200);
            res.body.should.be.a('array');
            res.body.length.should.be.eql(0);
          done();
        });
    });
  });
});

你知道问题出在哪里吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-09 23:01:39

在本地运行时,将从位于以下位置的文件中选取您所在的区域

代码语言:javascript
复制
%UserProfile%\.aws\config

它将看起来像这样

代码语言:javascript
复制
[default]
region=us-west-2
output=json

我的猜测是,当您在服务器上运行时,

代码语言:javascript
复制
dynamoose.AWS.config.update({
  accessKeyId: config.db.aws_access_key_id,
  secretAccessKey: config.db.aws_secret_access_key,
  region: config.db.aws_region
});

没有做你期望的事情,但当你在本地运行时,这个问题是隐藏的,因为配置会在你的配置文件中被提取。

尝试将配置设置为文字region: 'us-west-2',或者您可以设置凭据,并且配置是服务器上的环境变量(它们将被自动选取)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50251730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档