gabrielcsapo / gabrielcsapo/docusaurus-plugin-search-local

Including docusaurus-plugin-search-local causes runtime errors in website

Open
#84 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
27
Forks
9
PR merge metrics
No merged PRs in 30d

Description

Including docusaurus-plugin-search-local as a plugin in docusaurus 3.4.x causes the following issues at runtime in production build. Doesn't seem to affect usability.

359166406-8655ccf9-e395-400f-8929-8fbb54683340

The following patch fixes both of the issues I identified, this one and the pull request I have open.

```
diff --git a/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchBar/SearchBar.jsx b/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchBar/SearchBar.jsx
index cbedf6e..648a9c1 100644
--- a/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchBar/SearchBar.jsx
+++ b/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchBar/SearchBar.jsx
@@ -1,11 +1,11 @@
-import { Component, useEffect, useState } from "react";
import { useLocation } from "@docusaurus/router";
import { usePluginData } from "@docusaurus/useGlobalData";
-import ExecutionEnvironment from "@docusaurus/ExecutionEnvironment";
-import { SearchButton } from "./SearchButton";
-import SearchModal from "../SearchModal";
-import ErrorBoundary from "../ErrorBoundary";
+import useIsBrowser from "@docusaurus/useIsBrowser";
import Mark from "mark.js";
+import { Component, useEffect, useState } from "react";
+import ErrorBoundary from "../ErrorBoundary";
+import SearchModal from "../SearchModal";
+import { SearchButton } from "./SearchButton";
const SEARCH_PARAM_HIGHLIGHT = "_highlight";
function isEditingContent(event) {
const element = event.target;
@@ -26,12 +26,13 @@ export function SearchBar() {
const { highlightSearchTermsOnTargetPage } = usePluginData("docusaurus-plugin-search-local");
const [isOpen, setIsOpen] = useState(false);
const location = useLocation();
+ const isBrowser = useIsBrowser();
useEffect(() => {
if (highlightSearchTermsOnTargetPage) {
if (!Mark) {
return;
}
- const keywords = ExecutionEnvironment.canUseDOM
+ const keywords = isBrowser
? new URLSearchParams(location.search).getAll(SEARCH_PARAM_HIGHLIGHT)
: [];
if (keywords.length === 0) {
@@ -45,7 +46,7 @@ export function SearchBar() {
mark.unmark();
mark.mark(keywords);
}
- }, [highlightSearchTermsOnTargetPage, location.search]);
+ }, [isBrowser, highlightSearchTermsOnTargetPage, location.search]);
useEffect(() => {
function onKeyDown(event) {
if ((event.keyCode === 27 && isOpen) ||
diff --git a/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchBar/SearchButton.jsx b/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchBar/SearchButton.jsx
index f07451b..849b7e2 100644
--- a/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchBar/SearchButton.jsx
+++ b/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchBar/SearchButton.jsx
@@ -1,5 +1,6 @@
-import { useMemo } from "react";
+import useIsBrowser from "@docusaurus/useIsBrowser";
import * as React from "react";
+import { useMemo } from "react";
import "./SearchButton.css";
function ControlKeyIcon() {
return (

diff --git a/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchModal/SearchResult.jsx b/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchModal/SearchResult.jsx
index bfe2299..ea26dbf 100644
--- a/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchModal/SearchResult.jsx
+++ b/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchModal/SearchResult.jsx
@@ -52,7 +52,7 @@ const SearchResult = (props) => {
url += `?${buildDestinationQueryParams(tokens)}`;
}
if (h) {
- url += h;
+ url = h;
}
history.push(url);
onClick();
diff --git a/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchPage/SearchPage.jsx b/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchPage/SearchPage.jsx
index 1f594dd..102e690 100644
--- a/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchPage/SearchPage.jsx
+++ b/node_modules/docusaurus-plugin-search-local/lib/client/theme/SearchPage/SearchPage.jsx
@@ -112,7 +112,7 @@ function SearchResultItem({ searchResult: { document, type, page, tokens, metada
}
return (


- {
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.