如何解决Gatsby-node + react-papaparse 中没有定义 XMLHttprequest
我是 react 和 gatsby 的新手,但学习起来似乎有点有趣。所以我的想法是建立一个网站,每行谷歌表格都有一个页面。所以你可以说我想制作 google sheet CMS。还有其他更简单的工具可以用于此目的,但有些只是停止开发,有些使用起来非常昂贵。所以我想使用papaparse插件手动制作。
我的 Google 表格以 CSV 格式“发布到网络”。我想使用 react-papaparse 进行浏览器内的 CSVtoJSON 解析。我的 gatsby-node.js 是从 gatsby 文档中复制的,所以它有点准系统。
在我的 gatsby-node.js 中
const papaparse = require("react-papaparse")
exports.sourceNodes = ({ actions,createNodeId,createContentDigest }) => {
const { createNode } = actions
const myData = papaparse.readRemoteFile("published sheet links",{
download: true,header: true,delimiter: ',',dynamicTyping: true,})
const nodeContent = JSON.stringify(myData)
const nodeMeta = {
id: createNodeId(`my-data-${myData.key}`),parent: null,children: [],internal: {
type: `MyNodeType`,mediaType: `text/html`,content: nodeContent,contentDigest: createContentDigest(myData)
}
}
const node = Object.assign({},myData,nodeMeta)
createNode(node)
}
当我运行时,它在我的 google 表格链接中抛出 XMLHttpRequest is not defined 错误。所以这似乎是关于 CORS 的问题? 对此有什么解决方法?
谢谢
解决方法
恐怕您将无法使用 library(shiny)
library(shinyWidgets)
data("mpg",package = "ggplot2")
ui <- function(request) {
fluidPage(fluidRow(
column(
width = 10,offset = 1,bookmarkButton(),tags$h3("Filter data with selectize group"),panel(selectizeGroupUI(
id = "my-filters",params = list(
manufacturer = list(inputId = "manufacturer",title = "Manufacturer:"),model = list(inputId = "model",title = "Model:"),trans = list(inputId = "trans",title = "Trans:"),class = list(inputId = "class",title = "Class:")
)
),status = "primary"),DT::dataTableOutput(outputId = "table"))))}
server <- function(input,output,session) {
vals <- reactiveValues()
vals$sum <- NULL
res_mod <- callModule(
module = selectizeGroupServer,id = "my-filters",data = mpg,vars = c("manufacturer","model","trans","class"))
output$table <- DT::renderDataTable(res_mod())
# Bookmarking code --------------------------
onBookmark(function(state)
state$values$filtered <- res_mod()})
onRestore(function(state){
vals$sum <- state$values$filtered})
}
shinyApp(ui,server,enableBookmarking = "server")
,因为它永远不会在 Node 服务器中可用(出于显而易见的原因),它将在您的浏览器端可用,但在您的使用中- 在构建时,您需要它在 Node 服务器中可用,以创建您的架构。
您可以尝试使用其他一些获取方法(XMLHttpRequest
、axios 等)或使用一些插件,例如 gatsby-source-google-sheets
。您只需要安装插件和:
fetch
这将在构建时获取您的工作表,创建推断的 GraphQL 节点架构
资源:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。