# Node18及以上新版本打包Vuepress所遇到的问题
如标题所说,这是一个集合问题贴,主要就是描述下Node18及以上新版本在打包Vuepress所遇到的问题以及其有效解决办法,希望能帮到你
- Vuepress博客写完了,无法打包
- gie add添加文件时出现“warning: LF will be replaced by CRLF”如何解决
- Vuepress打包半完成,无法生成静态主页文件并提示“Error: Failed to compile with errors. ”
好了,我们一个一个解决:
# 1.无法打包问题
此时你的博客已经编写完成,并且npm run docs:dev预览在8080端口(默认端口)有效,但是书写npm run docs:build命令进行打包时会出现错误,此时你的项目结构大致为:
Vuepress根目录
├─docs
│ ├─.vuepress
│ │ ├─dist [打包的静态文件]
│ │ ├─public
│ │ └─config.js
│ ├─pages
│ │ ├─1.md [md格式文章]
│ │ └─2.md
│ └─README.md
└─node_modules [nodejs以及vuepress]
└─.....
2
3
4
5
6
7
8
9
10
11
12
对于 VuePress 打包失败的问题,可能有多种原因。以下是一些可能的解决方案:
- 检查依赖项是否正确安装。 在项目根目录下执行
npm install
命令,确保所有依赖项都已正确安装。如果有依赖项安装失败或者版本不匹配,可能会导致打包失败。 - 清除缓存。 执行
npm cache clean --force
命令清除 npm 的缓存,然后再次执行npm install
命令重新安装依赖项。 - 检查配置文件是否正确。 检查
vuepress
的配置文件是否正确。例如,检查是否有语法错误、路径是否正确等等。 - 升级依赖项版本。 在项目根目录下执行
npm outdated
命令,查看是否有需要升级的依赖项。如果有,执行npm update
命令升级依赖项版本。 - 检查打包命令是否正确。 在 package.json 文件中查看打包命令是否正确。例如,如果使用 npm run build 命令进行打包,则需要确保在 scripts 中有对应的 build 命令,并且命令正确。
如果以上解决方案都不能解决问题,可以尝试删除 node_modules 文件夹,然后重新执行 npm install 命令重新安装依赖项。如果问题仍然存在,可以尝试在 VuePress 官方社区或者 GitHub 上提问,寻求帮助。
⭐以上解决方法来自:
vuepress打包失败 (opens new window)
# 2.git add添加文件时出现“warning: LF will be replaced by CRLF”
这个问题出现在上传github仓库时的git add .出现,如果出现请运行$ git config --global core.autocrlf true
,这使Git 可以在你提交时自动地把回车(CR)和换行(LF)转换成换行(LF),而在检出代码时把换行(LF)转换成回车(CR)和换行(LF),避免符号混乱而出现的警告
⭐解决方法来自:
git提示“warning: LF will be replaced by CRLF”的解决办法 (opens new window)
# 3.Vuepress打包半完成,出现无法生成静态文件并出现“Error: Failed to compile with errors.”
部分错误代码:
Error: Failed to compile with errors.
at D:\my-notes\node_modules\@vuepress\core\lib\node\build\index.js:190:16
at finalCallback (D:\my-notes\node_modules\webpack\lib\MultiCompiler.js:254:12)
at D:\my-notes\node_modules\webpack\lib\MultiCompiler.js:277:6
2
3
4
5
伴随着上面这串红色代码出现的症状是,原本在\docs\.vuepress\dist
处打包的静态文件只剩像manifest文件夹,logo图片和manifest.json文件了,这肯定是打包未完成的表现
出现这种问题一般是旧电脑迁移新电脑,在下载node.js时使用了高于17.0以上的node.js导致,Win平台上最简单的解决办法是在系统下系统环境变量里添加一个新的变量:NODE_OPTIONS
,值为:--openssl-legacy-provider
,然后使用Git Bash Here执行即可,当然,最简单的方法当然会有弊端,就是目前生效的只有Git Bash Here,其他的办法目前不想搞了,如果有兴趣可以去拜读下该作者原文,大佬写的比我好多了
⭐解决方法来自:
由nodejs升级引起的构建错误:0308010C:digital envelope routines::unsupported (opens new window)