如何修复Node.js中"Error: Cryptr: secret must be a non-0-length string"报错
问题原因
该报错与node_modules依赖无关,不需要反复删除重装依赖,问题出在业务代码初始化Cryptr实例时传入的加密秘钥为空、undefined或空字符串,不符合Cryptr的参数要求。从报错栈可直接定位到出问题的代码位置:C:\Users\USER\Documents\projects\src\helpers\helpers.js 第6行。
解决步骤
- 打开
src/helpers/helpers.js文件,定位第6行的Cryptr初始化代码,格式一般为const cryptr = new Cryptr(你的秘钥参数) - 检查你传入的秘钥参数值:
- 如果秘钥是从环境变量读取(比如
process.env.CRYPTR_SECRET):- 确认项目根目录是否存在.env配置文件,文件内是否配置了对应的秘钥字段且字段值非空
- 确认项目入口app.js中,加载dotenv环境变量的代码
require('dotenv').config()写在所有引用helpers.js的代码之前,否则会出现环境变量还未加载就读取,拿到undefined的问题
- 如果秘钥是硬编码写入,检查是否有拼写错误、是否不小心写成了空字符串
- 如果秘钥是从环境变量读取(比如
- 可在Cryptr初始化代码前加一行打印验证参数值:
console.log('Cryptr秘钥参数:', 你传入的秘钥参数),启动服务后确认输出值非空 - 修复参数问题后重新执行
node app.js或nodemon app.js即可正常启动
内容的提问来源于stack exchange,提问作者C-Bizz
相关产品推荐
相关产品推荐

