VuePress开发环境正常但build编译失败,寻求技术帮助
VuePress 编译错误求助
我正在搭建个人博客,开发环境下运行一切正常,但执行vuepress build docs命令进行编译时,出现了大量错误。仓库地址:https://github.com/makabaka1880/makabaka1880/
具体编译错误信息:
> vuepress build docs [2:53] 130 ~/blog wait 提取站点元数据... tip 应用主题@vuepress/theme-default ... tip 应用插件container(即"vuepress-plugin-container") ... tip 应用插件@vuepress/register-components(即"@vuepress/plugin-register-components") ... tip 应用插件@vuepress/active-header-links(即"@vuepress/plugin-active-header-links") ... tip 应用插件@vuepress/search(即"@vuepress/plugin-search") ... tip 应用插件@vuepress/nprogress(即"@vuepress/plugin-nprogress") ... (node:18460) [DEP0040] 弃用警告:`punycode`模块已被弃用,请使用第三方替代方案。 (使用`node --trace-deprecation ...`查看警告来源) ✖ 客户端 编译出现错误,耗时2.16s ✔ 服务端 编译成功,耗时1.91s (undefined) assets/js/styles.8f3dca9f.js from Terser Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:80:19) at Object.createHash (node:crypto:139:10) at /Users/makabaka1880/.config/yarn/global/node_modules/terser-webpack-plugin/dist/index.js:217:37 at Array.forEach (<anonymous>) at TerserPlugin.optimizeFn (/Users/makabaka1880/.config/yarn/global/node_modules/terser-webpack-plugin/dist/index.js:160:259) at _next0 (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1) at eval (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:30:1) (undefined) assets/js/1.488cc455.js from Terser Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:80:19) at Object.createHash (node:crypto:139:10) at /Users/makabaka1880/.config/yarn/global/node_modules/terser-webpack-plugin/dist/index.js:217:37 at Array.forEach (<anonymous>) at TerserPlugin.optimizeFn (/Users/makabaka1880/.config/yarn/global/node_modules/terser-webpack-plugin/dist/index.js:160:259) at _next0 (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1) at eval (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:30:1) ... Error: Failed to compile with errors. at /Users/makabaka1880/.config/yarn/global/node_modules/@vuepress/core/lib/node/build/index.js:190:16 at finalCallback (/Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/MultiCompiler.js:254:12) at /Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/MultiCompiler.js:277:6 at done (/Users/makabaka1880/.config/yarn/global/node_modules/neo-async/async.js:2931:13) at runCompilers (/Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/MultiCompiler.js:181:48) at /Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/MultiCompiler.js:188:7 at /Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/MultiCompiler.js:270:7 at finalCallback (/Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/Compiler.js:257:39) at /Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/Compiler.js:273:13 at AsyncSeriesHook.eval [as callAsync] (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:33:1) at AsyncSeriesHook.lazyCompileHook (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/Hook.js:154:20) at onCompiled (/Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/Compiler.js:271:21) at /Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/Compiler.js:681:15 at AsyncSeriesHook.eval [as callAsync] (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1) at AsyncSeriesHook.lazyCompileHook (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/Hook.js:154:20) at /Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/Compiler.js:678:31 at AsyncSeriesHook.eval [as callAsync] (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:9:1) at AsyncSeriesHook.lazyCompileHook (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/Hook.js:154:20) at /Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/Compilation.js:1423:35 at AsyncSeriesHook.eval [as callAsync] (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:9:1) at AsyncSeriesHook.lazyCompileHook (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/Hook.js:154:20) at /Users/makabaka1880/.config/yarn/global/node_modules/webpack/lib/Compilation.js:1414:32 at eval (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:17:1) at /Users/makabaka1880/.config/yarn/global/node_modules/terser-webpack-plugin/dist/index.js:321:9 at TaskRunner.run (/Users/makabaka1880/.config/yarn/global/node_modules/terser-webpack-plugin/dist/TaskRunner.js:48:7) at TerserPlugin.optimizeFn (/Users/makabaka1880/.config/yarn/global/node_modules/terser-webpack-plugin/dist/index.js:227:18) at _next0 (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1) at eval (eval at create (/Users/makabaka1880/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:30:1)
解决方案
这个错误是Node.js 17+版本默认启用新OpenSSL哈希算法,与旧版VuePress依赖的Webpack/Terser插件不兼容导致的,以下是三种解决方法:
方法一:临时设置环境变量执行编译
根据操作系统选择对应命令:
- macOS/Linux:
NODE_OPTIONS=--openssl-legacy-provider vuepress build docs - Windows(PowerShell):
$env:NODE_OPTIONS="--openssl-legacy-provider"; vuepress build docs - Windows(CMD):
set NODE_OPTIONS=--openssl-legacy-provider && vuepress build docs
方法二:降级Node.js到16.x及以下
用Node版本管理工具(如nvm)切换版本:
nvm install 16 nvm use 16
切换完成后重新执行vuepress build docs。
方法三:升级VuePress到最新兼容版本
备份项目后执行升级命令:
# yarn用户 yarn upgrade vuepress --latest # npm用户 npm update vuepress --save-dev
升级完成后重新编译。
内容的提问来源于stack exchange,提问作者Mmakabaka1880
相关产品推荐
相关产品推荐

