背景:
vitepress
搭建帮助网站,本地运行时没有问题,打包时报错,现总结如下:
1. Package subpath ‘./xx’ is not defined by “exports”
解决方案:因为 vitepress默认是在服务器渲染 HTML返回客户端,如果你的某些包不需要在服务器端渲染,需要在.vitepress/config.mts中添加配置项,例如element-plus:
// .vitepress/config.mts
vite: {
ssr: {
noExternal: ['element-plus']
}
}
2. require() of ES Module xxx.js not supported
在config.mts中添加配置项后,打包仍会报错,报错提醒需要动态导入,修改如下:
// .vitepress/theme/index.js
// 参考自:https://vitepress.dev/zh/guide/ssr-compat
export default {
// ...
async enhanceApp({ app }) {
if (!import.meta.env.SSR) {
import('element-plus').then((module) => {
app.use(module.install)
})
}
}
}
3.打包时内存溢出
在package.json的scripts对象中添加以下命令,其中max_old_space_size可以根据自己的实际情况设置,例如2048, 4096等;如果打包所有文件夹,命令即为build . 如果打包指定文件夹,例如docs文件夹,命令即为build docs
"docs:buildMax": "node --max_old_space_size=8096 ./node_modules/vitepress/bin/vitepress.js build .",