使用 Gatsbyjs 包含本地 JS 和 CSS 文件

2023-12-03

我对这个完全陌生gatsbyjs生态系统,同时我正在学习一些reactjs。我最近购买了一个 html 模板,并尝试将其用作 UIgatsbyjs应用。该模板有很多 css 和 js,无论是专有的还是定制的,这意味着没有插件gatsbyjs来替换它们。也就是说,我剩下的唯一选择是将它们直接添加为link and scripts中的标签gatsbyjs应用。在一些教程之后,我看到他们建议导入这些文件,问题是这些文件不是webpack友好,导致多个错误并且应用程序无法编译。 按照此帮助页面Gatsby 服务器渲染 API获取此代码gatsby-ssr.js file:

const React = require("react")
exports.onRenderBody = ({ setBodyAttributes, setPostBodyComponents }) => {
  setBodyAttributes({
    "data-spy":"scroll",
    "data-offset":"73",
    "data-target":"#navbar-demos"
  })
  setPostBodyComponents([
    <script
      key="1"
      type="text/javascript"
      src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.slim.js"
    />,
    <script
      key="2"
      type="text/javascript"
      src="./src/revolution/js/extensions/revolution.extension.actions.min.js"
    />,
  ])
}

问题是这个文件revolution.extension.actions.min.js永远不会暴露给浏览器。当你打开开发者工具似乎存在,但绝对不存在:

enter image description here

enter image description here

我需要做什么才能正确渲染这些 .js 文件并且浏览器可以看到它们?这也适用于 .css 文件


经过更广泛的搜索后,我找到了几篇提供解决方案的文章。这是第一种方法:

import { withPrefix } from "gatsby"
import Helmet from "react-helmet"

const IndexPage = () => (
  <div>
    <Helmet>
        <script src={withPrefix('revolution/js/extensions/revolution.extension.actions.min.js')} type="text/javascript" />
    </Helmet>

  </div>
)
export default IndexPage

这是使用的第二种方法gatsby-ssr.js file:

const React = require("react")

exports.onRenderBody = ({setPostBodyComponents}) => {
          setPostBodyComponents([
            <script key="1" src={'js/plugins/plugins.js'} type="text/javascript" />,
            <script type="text/javascript" src={"js/beauty.custom.js"}/>
          ]);
  };

这样脚本标签将被添加到末尾body而不是head

我认为第二个是最好的,但必须考虑到每次你在其中更改某些内容时gatsby-ssr.js文件必须停止gatsby develop并重新运行它。

在第一种情况下使用react-helmet将热重载。

NOTE:在这两种方法中,文件都必须位于static folder

以下是我找到此方法的链接:

如何在 Gatsby 页面上包含本地 JavaScript?

如何使用 gatsby-browser 插入外部脚本?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Gatsbyjs 包含本地 JS 和 CSS 文件 的相关文章

  • fetch API 不通过 post 发送数据

    我在使用 Fetch API 通过 post 发送数据时遇到问题 服务器只收到一个空的 JSON 有人能帮我吗 基本上 我正在更新状态数据并将其发送到 API 提交的数据 请求 submitedData async event gt eve
  • 组织 jQuery/JavaScript 代码的最佳方式 (2013) [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 问题 这个答案之前已经回答过 但已经
  • 从提交的表单中获取值

    我有一个非常简单的表格
  • Javascript - 删除粘贴上的空格

    我有一个最大长度为 10 的输入文本字段 该字段用于澳大利亚电话号码 10 位数字 电话号码通常分为以下语法 12 12345678 如果有人复制上面的内容并将其粘贴到我的输入字段中 显然会留下最后一位数字并保留空格 有没有办法在粘贴到输入
  • LitElement 不更新列表中的复选框

    我有一个简单的清单 每个项目都有一个删除按钮 当我选中第一个项目然后删除它时 列表会更新 删除该项目 但会选中下一个项目的复选框 下一项的属性是正确的 这是我的代码 import LitElement html from lit eleme
  • React 和 ES6 继承

    Note 这篇文章是在 React 不支持 ES6 v12 时发布的 我有一个 ES6 课程 class BaseClass getInitialState return message Hello render return div di
  • 仅在文件下载完成后设置 cookie。

    我有一个场景 我想告诉用户下载完成并提示关闭按钮 为此 我使用 jquery 插件来连续监视 cookie 以了解下载何时完成 我的问题是我想设置这个cookie fileDownload true and path 下载完成后立即进行 为
  • 将图像嵌入 Chrome 扩展程序

    我正在构建一个 Google Chrome 扩展 它将 HTML 注入到真实的网页中 注入还包含图像 现在我想知道如何在扩展中引用图像 到目前为止 我只能在服务器上使用它们来引用它们http example com myimage png
  • 通过修改 html 设置在 Web 表单上上传的默认文件名/目录

    我一直使用这个上传表单 并且每次都使用相同的文件名 我想知道是否有一种方法可以通过更改代码并在本地保存文件来设置表单中的文件名 如果有其他方法可以实现自动化 我也愿意 谢谢 这是来源
  • 删除添加空值的Javascript对象项[重复]

    这个问题在这里已经有答案了 我有一个 JavaScript 对象 finalTitleList Title ffd Iscompleted Id 0 Title fdfmdbk Iscompleted Id 1 Title fdf d Is
  • 我想在数据表中使用 Div 结构而不是 Table。是否可以?

    我想用数据表 https datatables net 用div结构代替表格 目的是满足设计要求 有什么可能的方法或替代方案吗 不 您将无法执行此操作 Datatables 的核心仅适用于表格元素和子 thead tbody tfooter
  • React.js - 使用自定义路径运行 npm run build

    Running npm run build命令开启create react app项目在所有文件中创建一个构建文件夹和一些默认路径 例如在地图文件中 version 3 sources static js main 500cb0d9 js
  • 如何使我的网站兼容移动设备和平板电脑? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想让我现有的网站在手机 平板电脑上查看时自动调整 甚至在您在桌面上调整屏幕时自动调整 如果失败的话 如果太难 你有什么建议 我基本上
  • 在 JavaScript 中将长数字转换为缩写字符串,并有特殊的简短要求

    在 JavaScript 中 如何编写一个函数来转换给定的 编辑 正整数 数字 低于 1000 亿 转换为 3 个字母的缩写 其中 0 9 和 a z A Z 算作一个字母 但点 因为它在许多比例字体中很小 不会 并且会被忽略信函限制条款
  • 检查用户是否登录 Facebook

    我正在尝试使用 javascript 检查用户是否登录 Facebook 刚刚登录或未登录 与我的应用程序无关 我尝试在 FB init 之后使用以下代码 FB getLoginStatus function response alert
  • 如何使用 JavaScript 大致计算网站的连接速度?

    如何使用 JavaScript 大致计算网站的连接速度 我想创建一个像这样的javascript小部件 它将计算打开当前打开页面的速度 我想问是否可以仅使用 javascript 来完成此操作以及想法是什么 Update 请注意 页面大小始
  • React.js 的状态基于其他状态

    我遇到了 React js 的一些问题 并且在调用 setState 时状态没有立即设置 我不确定是否有更好的方法来解决这个问题 或者这是否真的只是 React 的一个缺点 我有两个状态变量 其中一个基于另一个 原始问题的小提琴 http
  • MutationOberserver 回调是否在修改观察到的元素的同一动画帧内触发? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 假设我对使用以下命令创建的框架内的元素进行了更改window requestAnimationFrame并且被修改的元素正在被观察
  • 按 Chartjs 条形图的键对对象进行分组

    我正在尝试使用 Chart js 创建条形图 我在尝试根据每个用户的状态创建分组条形图时陷入困境 这是数据 statusId 0 firstName Joe status appealed count 1 statusId 0 firstN
  • 如何使用 PHP 读取/显示 XML

    有没有办法使用 PHP 读取 external xml 来自不同网站的 xml 文件 我知道有一种方法可以使用 JavaScript 读取 XML 但前提是它们都位于同一根目录中 您能否提供有关如何获取 xml 文件的示例 然后阅读以下内容

随机推荐

  • 如何在 JSESSIONID Cookie 中设置 SameSite=None

    我有一个托管在 Heroku 上的 Spring Boot API 当我尝试通过 Google Chrome 中的 Angular 应用程序访问它时 在 Firefox 中工作正常 我面临以下问题 JSESSIONID cookie 似乎被
  • ORA-01489: 字符串连接结果太长

    ORA 01489 字符串连接结果太长 下面的 sql 查询旨在从数据库中提取以管道分隔的数据 并将其假脱机到 unix 上的文本文件中 select a b c d from table union select a b c d from
  • 样式表不适用于 Jekyll 主题 Freelancer bootstrap

    我已经有一个用户名 github io我的个人博客的存储库 现在我的目标是使用我发现的完全不同的主题创建另一个 github 托管的 jekyll 页面 这是我正在使用的主题的链接 https github com jeromelacaud
  • 使用 ReflectiveInjector 注入服务,无需指定依赖树中的所有类

    我目前有一个服务为我生成一个对象 该对象应该表现为一种活动记录 因为它可以在访问它的属性时延迟填充自身 我的第一种方法是将生成的对象使用的服务注入到创建服务中 然后将它们传递给创建的对象的构造函数 但由于创建服务从不使用这些服务 所以看起来
  • 如何将 CloudWatch 自定义日志组与 Python Shell Glue 作业结合使用?

    我有一些 Python Shell 类型的 Glue 作业 我想将作业日志发送到自定义 CloudWatch 日志组而不是默认日志组 我可以通过提供如下作业参数来实现 Spark 类型胶水作业 enable continuous cloud
  • 如何在 WinForms 应用程序中使用 Salesforce OAuth 2.0 隐式流身份验证?

    我编写了一个 Web 应用程序 它使用 OAuth 2 0 Web 服务器流连接到 Salesforce API 一切正常 但现在需要从 WinForms 桌面应用程序访问 Salesforce API 我陷入了困境 Salesforce
  • 在Scheme中添加一个元素到列表的末尾

    负责添加a到结束 b c 使 b c a 到目前为止 当我尝试时 print cons a b c I get a b c 但当我这样做时 print cons b c a I get b c a Stack 上的所有其他类似问题似乎都比这
  • Flutter:请求的资源上不存在“Access-Control-Allow-Origin”标头

    我已经使用 python Flask 创建了 REST GET API 它的代码如下 app Flask name app route youtube def firstGetAPI try url request args get url
  • 我们可以使用 Meteor 框架和 mysql 数据库吗

    我发现很多 Meteor 框架的参考网址 其中我发现 mongodb 作为数据库 因为我对 mongodb 没有太多了解 那么有没有办法实现mysql而不是mongodb There is一种方式 但就目前的框架而言 它是一条未铺砌的道路
  • 多线程聊天服务器

    我是线程新手 我正在尝试从服务器向客户端广播消息 但我不能 看起来服务器总是在侦听新连接 但我可以使用客户端终端向其他客户端发送消息 我的问题是如何在聆听的同时允许输入 这是代码 多线程聊天服务器同步 java import java io
  • 为什么我收到错误无法解析模块路径? Eslint 与 Typescript

    我阅读了很多资源 包括将 eslint 与 Typescript 结合使用 无法解析模块的路径 我一次又一次地遇到同样的错误 yarn lint 2 24 error Unable to resolve path to module com
  • 查找非 Visual C# 组件

    我尝试了多种方法来列出表单的所有非可视组件 例如 OpenDialog ImageList TableAdapters 等 但找不到任何内容 为了找到屏幕上的控件 我在 控件 屏幕中使用了 Foreach 但对于那些非可视组件我什么也没找到
  • 使用 JNI 时 Eclipse 对 C 文件的行为令人惊讶,为什么会这样?

    我正在开发一个 Android 应用程序 其中使用了大量 JNI 代码 最近 从过去 2 3 天开始 我真的对 Eclipse 的意外行为感到恼火 一旦我打开 c 文件 它就会显示模糊的错误 但是 如果我关闭并重新打开项目 错误就会消失 请
  • 获取一个月内的工作日

    我正在尝试获取给定月份内的日期 我的计划是 获取给定月份的开始日期和结束日期 获取该范围内的所有日期 迭代它们并使用以下方法消除周末内的日期isDateInWeekend method 其余日期为工作日 所以我创建了两个NSDate扩展方法
  • groovy++ 发生了什么? [关闭]

    Closed 这个问题是无关 目前不接受答案 我刚刚偶然发现了 groovy 发现它非常有趣 不幸的是 它似乎没有进一步发展 根据 github 的说法 最后一次提交是一年多前 邮件列表完全不活跃 最后一条消息是在四月份返回的 最近没有这方
  • 如何从 XML 文档中删除所有文本

    如何删除所有文本 但保持结构完整 例如
  • 清除MySQL查询缓存而不重新启动服务器

    有什么办法可以clear mysql 查询缓存无需重新启动 mySQL 服务器 我相信你可以用 RESET QUERY CACHE 如果您运行的用户具有重新加载权限 或者 您可以通过以下方式对查询缓存进行碎片整理 FLUSH QUERY C
  • MySQL - 来自另一个表的总和

    我想运行一个包含另一个表中的总和的 select 语句 我知道我可能需要设置一个连接 但我不知道如何处理它 我想选择一个帐户列表 然后获取它们的余额 来自另一个表的总和 这是我一直以来的想法 但显然它是不正确的 SELECT account
  • 如何从 Android 应用程序将 db 文件上传到 google 驱动器?

    我想将数据库文件从我的应用程序上传到谷歌驱动器 我可以在谷歌驱动器中创建一个文件夹 但我不知道如何上传数据库文件 这是我的代码 import java io BufferedInputStream import java io Buffer
  • 使用 Gatsbyjs 包含本地 JS 和 CSS 文件

    我对这个完全陌生gatsbyjs生态系统 同时我正在学习一些reactjs 我最近购买了一个 html 模板 并尝试将其用作 UIgatsbyjs应用 该模板有很多 css 和 js 无论是专有的还是定制的 这意味着没有插件gatsbyjs