【发布时间】:2020-04-16 20:49:41
【问题描述】:
我有一个客户,我正在与他合作的客户需要他的 pdf 文件可以在浏览器中读取,并且用户不需要先下载它们,结果证明这不是通过 Wordpress 完成的选项,所以我认为我可以如果它们不存在,每次构建之前在 gatsby 中下载它们,我想知道这是否可能。
我找到了这个仓库:https://github.com/jamstack-cms/jamstack-ecommerce
显示了使用此代码的方法:
function getImageKey(url) {
const split = url.split('/')
const key = split[split.length - 1]
const keyItems = key.split('?')
const imageKey = keyItems[0]
return imageKey
}
function getPathName(url, pathName = 'downloads') {
let reqPath = path.join(__dirname, '..')
let key = getImageKey(url)
key = key.replace(/%/g, "")
const rawPath = `${reqPath}/public/${pathName}/${key}`
return rawPath
}
async function downloadImage (url) {
return new Promise(async (resolve, reject) => {
const path = getPathName(url)
const writer = fs.createWriteStream(path)
const response = await axios({
url,
method: 'GET',
responseType: 'stream'
})
response.data.pipe(writer)
writer.on('finish', resolve)
writer.on('error', reject)
})
}
但是如果我把它放在我的 createPages 中并且我也不能在它之外使用它,它似乎不起作用,因为我无权访问 graphql 来首先查询数据。
知道怎么做吗?
【问题讨论】:
-
什么不起作用?
-
当我将代码放入 createPages 中时,查询不会运行,并且无法在“Query”类型上查询字段“allWordpressWpTechnicalInfo”。例如。
-
您是否尝试过查看一些 other APIs 的 gatsby 节点?
标签: node.js reactjs wordpress gatsby