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

Electron中LoadRunner.js报错:callback已调用或ERR_OSSL_EVP_UNSUPPORTED

解决Linux Electron+Webpack环境下的两类Node.js 17相关错误

一、搞定LoaderRunner.js的callback(): The callback was already called错误

这个问题一般是webpack loader里重复调用了context.callback()导致的,大概率是依赖的loader版本兼容问题,或是自定义loader代码存在逻辑漏洞。试试这些解决步骤:

  • 先把项目里的相关依赖更新到最新稳定版,尤其是loader-runner、fable-loader和webpack:
    npm update loader-runner fable-loader webpack
    
  • 如果你写了自定义loader,检查代码里是否在分支逻辑中重复触发了callback。比如避免这种错误写法:
    // 错误示范:两次调用callback
    module.exports = function(source) {
      if (someCondition) {
        this.callback(null, source);
      }
      this.callback(null, source); // 此处重复调用
    }
    
    改成确保只调用一次的逻辑:
    module.exports = function(source) {
      if (someCondition) {
        return this.callback(null, source);
      }
      this.callback(null, source);
    }
    
  • 最后清除缓存和依赖文件,重新安装:
    rm -rf node_modules package-lock.json
    npm install
    

二、解决ERR_OSSL_EVP_UNSUPPORTED错误

这个错误是Node.js 17+默认启用了OpenSSL 3.0的严格算法配置,导致旧版本webpack(尤其是webpack 4及以下)使用的加密算法不被支持。有三种解决方式可选:

办法1:临时启用旧的OpenSSL提供程序

在启动命令前添加环境变量即可:

NODE_OPTIONS=--openssl-legacy-provider npm run build
# 启动Electron应用时使用
NODE_OPTIONS=--openssl-legacy-provider electron .

嫌每次手动输入麻烦的话,直接修改package.json中的scripts配置:

"scripts": {
  "build": "NODE_OPTIONS=--openssl-legacy-provider webpack",
  "start": "NODE_OPTIONS=--openssl-legacy-provider electron ."
}

办法2:升级webpack到兼容版本

webpack 5.54.0及以上已经修复了该兼容性问题,直接升级相关依赖:

npm update webpack webpack-cli

升级完成后重新构建项目,通常无需再添加环境变量。

办法3:降级Node.js到16.x LTS版本

如果上述方法都不适用,可以临时将Node.js降级到16.x长期支持版本,该版本使用OpenSSL 1.1.1,不会出现此错误。用nvm管理版本的话:

nvm install 16
nvm use 16

内容的提问来源于stack exchange,提问作者Milan Popovic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:01:19