Почему не удалось выполнить запрос DynamodB с ошибкой Cors на локальном хосте вместо фактической ошибки? - PullRequest
0 голосов
/ 21 января 2019

В моей среде разработки у меня установлена ​​локальная копия Dynamodb с использованием Reactjs для подключения к ней. Я использую AWS SDK, в частности метод запросов для Dynamodb, для выполнения запросов.

Когда запрос правильно структурирован, он работает нормально. Однако, если запрос плохо структурирован, я получаю загадочный ответ. Консоль Chrome дает мне:

POST http://localhost:8000/ 400 (Bad Request)
Access to XMLHttpRequest at 'http://localhost:8000/' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

где localhost: 8000 указывает на локальный экземпляр Dynamodb, а localhost: 3000 указывает на экземпляр реагирования.

Самое главное, я не получаю сообщение об ошибке, касающееся конкретно моей ошибки. Например, я мог бы проецировать поле с зарезервированным словом, которое тогда не должно корректно работать. Тем не менее, я ожидал бы ошибку, говорящую «такое-то и такое-слово зарезервировано», а не это дело CORS.

Кроме того, когда я выполняю тот же запрос с моего сервера узлов, я получаю правильное сообщение об ошибке. Это заставляет меня задуматься, не связана ли эта проблема с реакцией как-то.

Есть ли способ получить правильное сообщение об ошибке в моей среде разработки, как я описал? Спасибо.

Edit:

Как и просили в комментариях, вот типичный способ получения данных. Обратите внимание, что это рабочий запрос, поэтому он не генерирует ошибку. Однако, по мере разработки, это будет тип запроса, в котором я буду делать ошибки и не получать хорошие отзывы.

// define tableName, indexName

async componentDidMount() {
    // properties include an initiated docClient and organizationId

    const [posts] = await Promise.all([ // typically I will fetch more than just posts (omitted for brevity)
        new Promise((resolve, reject) => 
            this.props.docClient.query(
                {
                    TableName: tableName,
                    IndexName: indexName,
                    KeyConditionExpression: 'SortKey = :sortKey',
                    ExpressionAttributeValues: {
                        ':sortKey': this.props.organizationId + delimiter + 'POST-Date'
                    },
                    ProjectionExpression: 'chatTitle, creatorName, creatorEmail, PostId, creationTime, #text, #data, lastModifiedTime, #status, mentions, attachments, chatType, creatorType',
                    ExpressionAttributeNames: { '#text': 'text', '#status': 'status', '#data': 'Data' }
                },
                (err, data) => {
                    if (err) {
                        reject(err);
                        return;
                    }

                    resolve(data.Items);
                }
            )
        )
    ]);

    // do something with posts, etc...
}

docClient генерируется в компоненте с использованием:

new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'})

где AWS - это модуль aws-sdk

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