easyops-cn / docusaurus-search-local

Offline/local search for Docusaurus v2/v3
https://easyops-cn.github.io/docusaurus-search-local/
MIT License
712 stars 90 forks source link

Search index not working after node upgrade #454

Closed KevinFarmerRXM closed 2 months ago

KevinFarmerRXM commented 2 months ago

Hi,

My docusaurus site builds with a search index locally using the config below. After a recent upgrade to node.js on our production server, the build fails with this error:

[ERROR] Unable to build website for locale en.
[ERROR] TypeError: Cannot read properties of undefined (reading 'load')
    at parse (c:\jenkins\workspace\support_docs_master\node_modules\@easyops-cn\docusaurus-search-local\dist\server\server\utils\parse.js:9:33)
    at c:\jenkins\workspace\support_docs_master\node_modules\@easyops-cn\docusaurus-search-local\dist\server\server\utils\scanDocuments.js:24:75
    at Generator.next (<anonymous>)
    at fulfilled (c:\jenkins\workspace\support_docs_master\node_modules\tslib\tslib.js:166:62)

Prior to the upgrade, the site was not building and throwing the error:

The engine "node" is incompatible with this module. Expected version ">=18.17". Got "18.15.0"

However, I didn't investigate this and simply upgraded node.js.

Locally, I am running node v20.16.0. Our production server was upgraded to v20.14.0. The docusaurus version is 2.3.1. The package file contains:

"@easyops-cn/docusaurus-search-local": "^0.35.0",

Issue 320 seemed similar so I tried the production build with and without the values for routeBasePath and docsRouteBasePath that are commented out below.

At best, the site builds without indexing. At worst, it doesn't build. The production build does have a file search.html, but it is quite small.

presets:
    [
        [
            'classic',
            /** @type {import('@docusaurus/preset-classic').Options} */
            ({
                docs:
                {
                    //routeBasePath: '/',
                    sidebarPath: require.resolve('./sidebars.js'),
                    sidebarCollapsible: true,
                    sidebarCollapsed: true,
                },                
                theme:
                {
                    customCss: require.resolve('./src/css/custom.css'),
                },
            }),
        ],
    ],

    // themes:
    // [

    // ],

    plugins:
    [
        require.resolve('docusaurus-plugin-image-zoom'),
        [
            require.resolve('@easyops-cn/docusaurus-search-local'),
            {
                //docsRouteBasePath: "/",
                hashed: true,
                language: ["en"],
                highlightSearchTermsOnTargetPage: true,
                explicitSearchResultPath: true,
                searchResultLimits: 8,
                ignoreFiles: [/.solutions./],
            },
        ]
    ],

Let me know if I should provide any more details. Thanks

weareoutman commented 2 months ago

Seems to be the same issue of #444 related to an update of a dependency named cheerio. Try v0.44.5 or above.

weareoutman commented 2 months ago

I noticed you're using Docusaurus v2, you may try downgrade instead of upgrade, see this comment https://github.com/easyops-cn/docusaurus-search-local/issues/447#issuecomment-2319624892

KevinFarmerRXM commented 2 months ago

Thanks!

Sorry for the delayed reply. It seems a few things needed to be fixed. Along the way I upgraded docusaurus and some modules.

The build now throws only this error:

Module not found: Error: Can't resolve '@generated/site-storage' in 'c:\jenkins\workspace\<redacted>\node_modules\@easyops-cn\docusaurus-search-local\node_modules\@docusaurus\theme-common\lib\utils'

package.json

{
  "name": "docs-rxmsupport",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "docusaurus": "docusaurus",
    "start": "docusaurus start",
    "build": "docusaurus build",
    "swizzle": "docusaurus swizzle",
    "deploy": "docusaurus deploy",
    "clear": "docusaurus clear",
    "serve": "docusaurus serve",
    "write-translations": "docusaurus write-translations",
    "write-heading-ids": "docusaurus write-heading-ids"
  },
  "dependencies": {
    "@docusaurus/core": "3.0.0",
    "@docusaurus/preset-classic": "3.0.0",
    "@easyops-cn/docusaurus-search-local": "^0.44.5",
    "@mdx-js/react": "^3.0.0",
    "clsx": "^1.2.1",
    "docusaurus-plugin-image-zoom": "^0.1.1",
    "prism-react-renderer": "^2.1.0",
    "react": "^18.0.0",
    "react-dom": "^18.0.0"
  },
  "devDependencies": {
    "@docusaurus/module-type-aliases": "3.0.0",
    "@docusaurus/types": "3.0.0"
  },
  "browserslist": {
    "production": [
      ">0.5%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "engines": {
    "node": ">=18.0"
  }
}
KevinFarmerRXM commented 2 months ago

This is exactly issue https://github.com/easyops-cn/docusaurus-search-local/issues/447#issuecomment-2319624892. I'll post to that issue.