Closed pepelsbey closed 5 years ago
Решил попробовать забрать данные с xml с помощью gatsby-source-rss-feed но он не хочет работать с этой xml. Пробовал другую xml вроде не ругался. Что там не так не могу понять, так как с Gatsby до этого не работал. Так информация для тех кто будет делать задачу.
error Plugin gatsby-source-rss-feed returned an error
TypeError: value must be an array of bytes
- v35.js:29 generateUUID
[new]/[uuid]/lib/v35.js:29:38
- create-node-id.js:16 createNodeId
[new]/[gatsby]/dist/utils/create-node-id.js:16:10
- api-runner-node.js:106 namespacedCreateNodeId
[new]/[gatsby]/dist/utils/api-runner-node.js:106:42
- gatsby-node.js:32 feed.items.forEach.item
[new]/[gatsby-source-rss-feed]/gatsby-node.js:32:20
- Array.forEach
- gatsby-node.js:31 Object.exports.sourceNodes
[new]/[gatsby-source-rss-feed]/gatsby-node.js:31:14
error Cannot read property 'filter' of undefined
TypeError: Cannot read property 'filter' of undefined
- api-runner-node.js:274 Promise.mapSeries.catch.then.results
[new]/[gatsby]/dist/utils/api-runner-node.js:274:42
- util.js:16 tryCatcher
[new]/[bluebird]/js/release/util.js:16:23
- promise.js:512 Promise._settlePromiseFromHandler
[new]/[bluebird]/js/release/promise.js:512:31
- promise.js:569 Promise._settlePromise
[new]/[bluebird]/js/release/promise.js:569:18
- promise.js:614 Promise._settlePromise0
[new]/[bluebird]/js/release/promise.js:614:10
- promise.js:694 Promise._settlePromises
[new]/[bluebird]/js/release/promise.js:694:18
- async.js:138 _drainQueueStep
[new]/[bluebird]/js/release/async.js:138:12
- async.js:131 _drainQueue
[new]/[bluebird]/js/release/async.js:131:9
- async.js:147 Async._drainQueues
[new]/[bluebird]/js/release/async.js:147:5
- async.js:17 Immediate.Async.drainQueues [as _onImmediate]
[new]/[bluebird]/js/release/async.js:17:14
error UNHANDLED REJECTION
TypeError: Cannot read property 'filter' of undefined
- api-runner-node.js:274 Promise.mapSeries.catch.then.results
[new]/[gatsby]/dist/utils/api-runner-node.js:274:42
- util.js:16 tryCatcher
[new]/[bluebird]/js/release/util.js:16:23
- promise.js:512 Promise._settlePromiseFromHandler
[new]/[bluebird]/js/release/promise.js:512:31
- promise.js:569 Promise._settlePromise
[new]/[bluebird]/js/release/promise.js:569:18
- promise.js:614 Promise._settlePromise0
[new]/[bluebird]/js/release/promise.js:614:10
- promise.js:694 Promise._settlePromises
[new]/[bluebird]/js/release/promise.js:694:18
- async.js:138 _drainQueueStep
[new]/[bluebird]/js/release/async.js:138:12
- async.js:131 _drainQueue
[new]/[bluebird]/js/release/async.js:131:9
- async.js:147 Async._drainQueues
[new]/[bluebird]/js/release/async.js:147:5
- async.js:17 Immediate.Async.drainQueues [as _onImmediate]
[new]/[bluebird]/js/release/async.js:17:14
Судя по исходникам он в item ищет link, а в этой rss его нет. Возможно стоит просто свой плагин сделать на основе этого.
P.S. Тьфу ты, там же atom. Прошу прощения, надо просто другой плагин юзать.
Там есть ещё парочка похожих, например gatsby-source-rss. Но кажется проще будет сделать свой, вроде gatsby-source-rss-podcast
.
gatsby-source-atom
вроде завелся
Сделал PR вроде работает https://github.com/web-standards-ru/new/pull/98
Ура!
Структура:
На странице
podcast
вывести список с тизерами выпусков: заголовок, краткое описание, ссылка, на страницахpodcast/0
отдельные выпуски: полное описание, простой плеер<audio src="/podcast/episodes/0.mp3">
.Все данные при сборке брать из web-standards.ru/podcast/feed, по принципу, на котором уже работает импорт календаря.