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
未定义的问题。