You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 05:32:02