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

使用vercel/ncc打包后运行报Cannot find module 'bcrypto.node'错误如何解决

修复ncc打包后缺失bcrypto.node模块的方案

问题根源

bcrypto属于包含原生C++编译产物的Node.js依赖包,bcrypto.node就是其预编译的二进制组件。vercel/ncc默认仅会打包项目中的JS/TS类代码,不会自动识别并打包这类原生二进制模块,导致运行时找不到对应文件。

可行修复方法

  • 方法1:使用ncc的外部依赖排除参数
    打包时添加--external bcrypto参数,告诉ncc不要打包bcrypto模块,运行时会自动加载项目node_modules中的对应依赖。打包命令示例:

    ncc build index.js --external bcrypto
    

    注意:这种方案要求运行环境的同级目录下有包含bcrypto的node_modules文件夹

  • 方法2:手动复制bcrypto.node到打包产物目录
    打包完成后,找到项目node_modules/bcrypto/build/Release/路径下的bcrypto.node文件,直接复制到ncc生成的打包产物所在的同级目录即可,运行时会自动检索同级目录下的原生模块。

  • 方法3:替换无原生依赖的替代包
    如果不需要强依赖bcrypto的特定功能,可以换成纯JS实现的同类加密库,比如crypto-js,修改业务代码中的引用后重新打包即可,不会再出现原生模块缺失问题。

  • 方法4:配置ncc的assets规则打包原生模块
    打包时添加--asset '*.node'参数,让ncc自动识别并把所有.node后缀的原生模块作为静态资源打包到产物目录:

    ncc build index.js --asset '*.node'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:45:04