迁移Express项目至Bun时,使用Bun.password.hash提示找不到Bun
解决Express迁移Bun时的bcrypt相关问题
一、解决npm bcrypt模块找不到二进制文件的问题
出现Cannot find module "/.../bcrypt_lib.node"错误是因为bcrypt的预编译二进制包和Bun运行时不兼容,可尝试以下方案:
- 重新安装bcrypt,让Bun重新编译适配:
bun remove bcrypt bun add bcrypt - 若仍报错,改用纯JS实现的
bcryptjs替代(无需编译,兼容性更好):
代码里替换为bcryptjs的API,用法和bcrypt基本一致:bun add bcryptjsconst bcrypt = require('bcryptjs'); const hashedPass = await bcrypt.hash(password, 10);
二、解决Bun内置密码哈希功能的Cannot find name 'Bun'错误
情况1:JavaScript项目
确保你是用bun run命令执行代码,而不是node命令。Bun全局对象只有在Bun运行时环境中才存在,用Node执行会找不到这个对象。
情况2:TypeScript项目
需要安装Bun的类型定义文件,并配置tsconfig.json:
- 安装类型依赖:
bun add -D @types/bun - 修改
tsconfig.json,将types数组添加"bun":
这样TypeScript就能识别全局的{ "compilerOptions": { "types": ["bun"] } }Bun对象了。
另外,确认你的Bun版本是最新的,旧版本可能存在兼容性问题,更新命令:
bun upgrade
内容的提问来源于stack exchange,提问作者Abel
相关产品推荐
相关产品推荐

