Skip to content
📈0️⃣

vitepress 打包提示 localStorage is not defined

问题

打包执行 npm run docs:build 后提示 localStorage is not defined

txt
failed to load config from D:\www.zichin.com\blog\docs\.vitepress\config.mjs
build error:
ReferenceError: localStorage is not defined
    at file:///D:/www.zichin.com/blog/docs/.vitepress/config.mjs.timestamp-1712803117360-62db4c1f1022a.mjs:432:33
    at loadConfigFromFile (file:///D:/www.zichin.com/blog/node_modules/.pnpm/vite@5.2.8_sass@1.74.1/node_modules/vite/dist/node/chunks/dep-whKeNLxG.js:68531:15)
    at async resolveUserConfig (file:///D:/www.zichin.com/blog/node_modules/.pnpm/vitepress@1.1.0_@algolia+client-search@4.23.2_axios@1.6.8_sass@1.74.1_search-insights@2.13.0/node_modules/vitepress/dist/node/serve-Csn-CKFx.js:20023:27)
    at async resolveConfig (file:///D:/www.zichin.com/blog/node_modules/.pnpm/vitepress@1.1.0_@algolia+client-search@4.23.2_axios@1.6.8_sass@1.74.1_search-insights@2.13.0/node_modules/vitepress/dist/node/serve-Csn-CKFx.js:19943:48)
    at async build (file:///D:/www.zichin.com/blog/node_modules/.pnpm/vitepress@1.1.0_@algolia+client-search@4.23.2_axios@1.6.8_sass@1.74.1_search-insights@2.13.0/node_modules/vitepress/dist/node/serve-Csn-CKFx.js:46735:22)
 ELIFECYCLE  Command failed with exit code 1.

 *  终端进程“C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command pnpm run docs:build”已终止,退出代码: 1。
 *  终端将被任务重用,按任意键关闭。

原因

这个错误是因为在构建过程中,localStorage 对象未定义。

我在代码中使用了 localStorage 对象,但打包时 localStorage 对象未定义。

解决

config.mjs文件中添加如下代码:

js
export default defineConfig((ctx) => {
  globalThis.localStorage ??= { 
    getItem: () => {}, 
    setItem: () => {}, 
  }; 
  return {
    lang: "zh-CN",
    title: "🇨🇳子卿全栈系列 💯",
    // 其他代码
  };
});

globalThis.localStorage ??= { ... } 可以解决 localStorage 未定义的问题。