Вот мой тестовый код nodejs8.10:
var request = require('requestretry');
const testRequest = async() =>{
request({
url: 'https://jsonplaceholder.typicode.com/posts/1',
json: true,
maxAttempts: 5, // (default) try 5 times
retryDelay: 5000, // (default) wait for 5s before trying again
retryStrategy: request.RetryStrategies.HTTPOrNetworkError
}, function(err, response, body){
if (response) {
console.log('The number of request attempts: ' + response.attempts);
console.log(body);
}else{
console.log('error: ', err);
}
});
}
testRequest(); // for local implementation
exports.handler = async (event) => {
let x = await testRequest();
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Test Lambda!'),
};
return response;
};
против.Тестовый код nodejs6.10:
var request = require('requestretry');
function testRequest () {
request({
url: 'https://jsonplaceholder.typicode.com/posts/1',
json: true,
// The below parameters are specific to request-retry
maxAttempts: 5, // (default) try 5 times
retryDelay: 5000, // (default) wait for 5s before trying again
retryStrategy: request.RetryStrategies.HTTPOrNetworkError // (default) retry on 5xx or network errors
}, function(err, response, body){
// this callback will only be called when the request succeeded or after maxAttempts or on error
if (response) {
console.log(body);
}
});
}
testRequest();
exports.handler = (event, context, callback) => {
testRequest();
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
callback(null, response);
};
Он не отображает журнал, связанный с пакетом requestretry на лямбда-узлах 8.10, и никаких сообщений об ошибках.Тем не менее, он может получить ответ и логи, выполнив команду node <filename>
на локальном компьютере после npm install
с необходимыми пакетами, такими как 'requestretry' и его необходимыми пакетами.Если приведенный выше файл преобразован в формат Nodejs6.10, и он не будет иметь проблемы как на AWS Lambda, так и на локальном компьютере.
Мне нужно выяснить причину, прежде чем я преобразую коды из nodejs6.10 (обратный вызовформат) в nodejs8.10 (асинхронный формат).