CodeSandbox - https://codesandbox.io/s/jj597mrvmw
У меня проблема с некоторыми данными, возвращаемыми из внешнего API на мой сайт GatsbyJS / ReactJS.
В частности, проблема возникает при обработке изображений с помощью gatsby-image и gatsby-plugin-sharp с использованием API ...GatsbyImageSharpFluid в запросах GraphQL.
Из тысяч изображений кажется, что только одно вызывает проблемы, возвращая ошибку.
Errors:
icc_transform: no input profile
vips_colourspace: no known route from 'cmyk' to 'srgb'
Я мог бы просто отфильтровать это изображение, но меня беспокоит, что будущие изображения в виде обновлений API могут вызвать ту же проблему.
Как я могу
sharp, чтобы изображение можно было обработать? или,filter, которые возвращают эту ошибку во время обработки createRemoteFileNode, илиcatch (error), илиcreateRemoteFileNode в gatsby-node.js выглядит как
exports.sourceNodes = async ({ actions, store, cache, createNodeId }) => {
const { createNode, createNodeField } = actions;
const { data } = await axios.get(API_URI);
for (const event of data._embedded.events) {
let fileNode;
let output = [];
let filterResults = event.images.filter(e => e.width >= 1900);
output.push(...filterResults);
try {
fileNode = await createRemoteFileNode({
url: output[0].url,
cache,
store,
createNode,
createNodeId,
});
await createNodeField({
node: fileNode,
name: 'EventImage',
value: 'true'
});
await createNodeField({
node: fileNode,
name: 'name',
value: event.name
});
} catch (error) {
console.warn('error creating node', error);
}
}
};
Ура, был там, но, к сожалению, это неприятный образ. Я отфильтровал изображение, но проблема заключается в том, поступает ли еще больше из API. Мне нужно решение для catch и пропустить эти изображения, но я не понимаю, как определить ошибку до отказа build.
Как вы, вероятно, уже заметили, это, скорее всего, ошибка в Гэтсби или регресс в Sharp, но более серьезная проблема заключается в том, что у Gatsby нет эффективной обработки ошибок для таких ситуаций. Вы также можете попробовать открыть запрос функции для этого, но не очевидно, что делать, когда вы запрашиваете преобразованное изображение, а вы не можете его получить.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


обязательно ознакомьтесь с подробной документацией: Sharp.dimens.io/en/stable/search.html?q=cmyk. однако похоже, что ваше проблемное изображение имеет цветовое пространство cmyk. Вы можете использовать gimp, чтобы изменить это для этого конкретного изображения и посмотреть, работает ли оно.