Продолжайте получать сообщение об ошибке «ConfigError: Отсутствует регион в конфигурации» в Node.js независимо от того, что я делаю - PullRequest
2 голосов
/ 16 апреля 2019

Я получаю сообщение «UnhandledPromiseRejectionWarning: ConfigError: Missing region in config» при попытке сделать запросы к API, которые я настроил в Node.js.

Я новичок в DynamoDB и после настройки большинстваиз моего стандартного кода я использую Почтальон, чтобы проверить мои маршруты.Однако я продолжаю получать одну и ту же ошибку каждый раз, когда делаю запрос на публикацию.Я проверил некоторые решения в существующих потоках, а именно: Настройка региона в Node.js AWS SDK , но не могу заставить его работать.

В настоящее время я занимаюсь разработкой приложения локально и проверил базу данных.где добавляются элементы.

Моя установка выглядит следующим образом:

// user_controller.js

const uuid = require('uuid');
const sanitizer = require('validator');
const bcrypt = require('bcryptjs-then');
const AWS = require('aws-sdk');
const config = require('../config/config');
const { signToken, userByEmail, userById } = require('../Helpers/Users');
const isDev = true

Тогда в моем блоке кода у меня есть следующее:

// user_controller.js
(...)

if (isDev) {
      AWS.config.update(config.aws_local_config);
    } else {
      AWS.config.update(config.aws_remote_config);
    }

    const DB = new AWS.DynamoDB.DocumentClient(); 


    const params = {
      TableName: config.aws_table_name,
      Item: {
        userId: await uuid.v1(),
        firstName: sanitizer.trim(firstName),
        lastName: sanitizer.trim(lastName),
        email: sanitizer.normalizeEmail(sanitizer.trim(email)),
        password: await bcrypt.hash(password, 8),
        level: 'standard',
        createdAt: new Date().getTime(),
        updatedAt: new Date().getTime(),
      },
    }

 return userByEmail(params.Item.email) // Does the email already exist?
      .then(user => { if (user) throw new Error('User with that email exists') })
      .then(() => DB.put(params).promise()) // Add the data to the DB
      .then(() => userById(params.Item.id)) // Get user data from DB
      .then(user => (err, data) => {
        console.log("AFTER USER CREATED")
        if (err) {
          res.send({
            success: false,
            message: 'Error: Server error'
          });
        } else {
          console.log('data', data);
          res.send({
            statusCode: 201,
            message: 'Success - you are now registered',
            data: { token: signToken(params.Item.id), ...user },
          });
        }
      }) 


(...)

Наконец яимпорт конфигурации из отдельного файла:

// config.js

module.exports = {
  aws_table_name: 'usersTable',
  aws_local_config: {
    region: 'local',
    endpoint: 'http://localhost:8000'
  },
  aws_remote_config: {}
}

In уже настроил aws-sdk:

AWS Access Key ID [****************foo]: 
AWS Secret Access Key [****************bar]: 
Default region name [local]: 
Default output format [json]: 

Вот вывод, который я продолжаю получать:

(node:4568) UnhandledPromiseRejectionWarning: ConfigError: Missing region in config
    at Request.VALIDATE_REGION (/Users/BANGBIZ/Programming/techstars/capexmove/SmartLegalContract/node_modules/aws-sdk/lib/event_listeners.js:92:45)
    at Request.callListeners (/Users/BANGBIZ/Programming/techstars/capexmove/SmartLegalContract/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
    at callNextListener (/Users/BANGBIZ/Programming/techstars/capexmove/SmartLegalContract/node_modules/aws-sdk/lib/sequential_executor.js:96:12)
    at /Users/BANGBIZ/Programming/techstars/capexmove/SmartLegalContract/node_modules/aws-sdk/lib/event_listeners.js:86:9
    at finish (/Users/BANGBIZ/Programming/techstars/capexmove/SmartLegalContract/node_modules/aws-sdk/lib/config.js:350:7)
    at /Users/BANGBIZ/Programming/techstars/capexmove/SmartLegalContract/node_modules/aws-sdk/lib/config.js:368:9
    at SharedIniFileCredentials.get (/Users/BANGBIZ/Programming/techstars/capexmove/SmartLegalContract/node_modules/aws-sdk/lib/credentials.js:127:7)
    at getAsyncCredentials (/Users/BANGBIZ/Programming/techstars/capexmove/SmartLegalContract/node_modules/aws-sdk/lib/config.js:362:24)
    at Config.getCredentials (/Users/BANGBIZ/Programming/techstars/capexmove/SmartLegalContract/node_modules/aws-sdk/lib/config.js:382:9)
    at Request.VALIDATE_CREDENTIALS (/Users/BANGBIZ/Programming/techstars/capexmove/SmartLegalContract/node_modules/aws-sdk/lib/event_listeners.js:81:26)
(node:4568) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 4)
(node:4568) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Как я уже сказал, я пробовал много вариантов, но безрезультатно.Хотелось бы помочь, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...