#javascript #node.js
#javascript #node.js
Вопрос:
В Nodejs у меня есть функция для создания base64Data из моего URL, я просто не понимаю, почему мне не удалось извлечь данные из функции. Я новичок в использовании Promises для получения продукта, возвращаемого из функции. Я думаю, что это может быть моей проблемой здесь. Я пытаюсь получить данные base64 с помощью request
npm. У меня есть массив URL, отправленных из интерфейса, и мне нужно сопоставить каждый из них, чтобы получить данные base64. Затем я пытаюсь поместить данные в новый массив, который будет отображать данные base64 для каждого URL.
Вот что я пытался сделать..
const getbase64Data = (files) => {
files.map((image, index) => {
request.get(image, function (error, response, body) {
if (!error amp;amp; response.statusCode == 200) {
data =
"data:"
response.headers["content-type"]
";base64,"
Buffer.from(body).toString("base64");
let array = [];
array.push(data);
}
});
});
return array;
};
console.log(getbase64Data(signatures));
Когда я запускаю консоль.войдите, как указано выше, он возвращается в виде пустого массива. Я предполагаю, что это способ чтения Javascript.
Редактировать:
Запрос содержит ошибку
Error: Invalid protocol: data:
at Request.init (/Users/node_modules/request/request.js:458:31)
at new Request (/Users/node_modules/request/request.js:127:8)
at request (/Users/node_modules/request/index.js:53:10)
at /Users/node_modules/request/index.js:61:12
at Function.get (/Users/node_modules/request/index.js:100:12)
at /Users/routes/api.js:327:15
at Array.map (<anonymous>)
at getbase64Data (/Usersroutes/api.js:326:18)
at /Users/routes/api.js:360:15
at Layer.handle [as handle_request] (/Users/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Users/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/node_modules/express/lib/router/layer.js:95:5)
at /Users/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/Users/node_modules/express/lib/router/index.js:335:12)
at next (/Users/node_modules/express/lib/router/index.js:275:10)
Комментарии:
1. переменная с именем array определена внутри функции map, но вы пытаетесь вернуть ее из внешней функции. Попробуйте
return files.map(....
. Array.prototype.map использует обратный вызов для преобразования одного массива в другой массив. Видите, moz Вы допускаете ошибки без сбоев. Возможно, вы захотите, чтобы консоль регистрировала что-то внутри обратного вызова для request.get, если вам не удается получить изображение.2. Спасибо, что сообщили мне об ошибке, я обновил детали с ошибкой