Рассмотрим следующий код в gatsby-config.js
:
module.exports = {
plugins: [
{
resolve: `gatsby-source-fetch`,
options: {
name: `brands`,
type: `brands`,
url: `${dynamicURL}`, // This is the part I need to be dynamic at run/build time.
method: `get`,
axiosConfig: {
headers: { Accept: "text/csv" },
},
saveTo: `${__dirname}/src/data/brands-summary.csv`,
createNodes: false,
},
},
],
}
Как вы можете видеть выше, мне нужно, чтобы URL-адрес исходного плагина был динамическим. Причина в том, что URL-адрес файла будет изменяться каждый раз, когда он обновляется в CMS. Мне нужно запросить CMS для этого поля и получить его URL-адрес CDN, прежде чем переходить к плагину.
Я попытался добавить следующее в начало gatsby-config.js
, но получаю ошибки.
const axios = require("axios")
let dynamicURL = ""
const getBrands = async () => {
return await axios({
method: "get",
url: "https://some-proxy-url-that-returns-json-with-the-csv-file-url",
})
}
;(async () => {
const brands = await getBrands()
dynamicURL = brands.data.summary.url
})()
Я предполагаю, что это не сработает, потому что конфигурация не ожидает разрешения вышеуказанного запроса и, следовательно, все, что мы получаем, - это пустой URL-адрес.
Есть ли лучший способ сделать это? Я не могу просто заранее предоставить исходному плагину фиксированный / известный URL.
Любая помощь очень ценится. Обычно я использую Vue.js, но мне приходится работать с React / Gatsby, поэтому я не совсем с ним знаком.