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

Windows 10环境下运行Jest时找不到binding.node文件的问题咨询

解决Electron Jest测试中找不到ref模块binding.node的问题

我之前也帮不少开发者解决过这个问题——在Windows 10下不管是本地VirtualBox虚拟机还是AppVeyor CI环境里,跑Electron应用的Jest测试时遇到\?\C:\Users\User\peruse\app\node_modules\ref\build\Release\binding.node找不到的错误,本质原因都是原生模块没有适配Electron的运行环境。Jest默认跑在普通Node.js环境,但Electron有自己定制的Node内核,原生模块必须针对这个内核重新编译才能正常加载。下面是一步步的解决办法:

  • 第一步:安装electron-rebuild工具
    这个工具是Electron官方推荐的原生模块重编译工具,专门处理这类环境不匹配的问题,先把它装到开发依赖里:

    npm install --save-dev electron-rebuild
    
  • 第二步:重新编译ref模块
    在项目根目录执行下面的命令,强制针对当前Electron版本重新编译ref模块:

    npx electron-rebuild -f -w ref
    

    其中-f参数是强制覆盖原有编译文件,-w ref指定只处理ref模块;如果你的项目里还有其他原生模块(比如serialport、ffi-napi这类),可以去掉-w ref参数一次性处理所有原生模块。

  • 第三步:配置Jest使用Electron测试环境
    默认情况下Jest用的是普通Node环境,必须把它改成Electron环境才能正确加载编译后的模块。首先安装jest-electron依赖:

    npm install --save-dev jest-electron
    

    然后在你的Jest配置文件(比如jest.config.js)里修改测试环境:

    module.exports = {
      testEnvironment: 'electron',
      // 其他Jest配置项...
    };
    
  • 第四步:AppVeyor CI环境的额外配置
    要确保CI环境里也执行了重编译步骤,不然AppVeyor拉取依赖后还是会用默认编译的模块。在你的appveyor.yml里添加安装后的重编译命令:

    install:
      - npm install
      - npx electron-rebuild
    
  • 第五步:清理缓存重试(如果前几步无效)
    有时候node_modules的缓存或者Jest的缓存会残留旧的编译文件,导致问题反复,这时候可以彻底清理后重新安装:

    rm -rf node_modules
    del package-lock.json  # Windows环境用这个命令,Linux/macOS用rm package-lock.json
    npm cache clean --force
    npm install
    npx electron-rebuild
    

如果以上步骤都试过还是不行,可以检查ref模块的版本是否和你当前使用的Electron版本兼容——有些旧版本的ref可能不支持较新的Electron内核,这时候可以尝试升级ref到最新版本,或者查看ref的项目文档确认支持的Electron版本范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:10:38