记录一次在node环境下解决无法安装argon2

前言

在学习NestJS过程中需要实现登录注册的逻辑,其中涉及到加密方法,于是想要采用argon2的方法加密用户密码。如果有不了解什么是argon2的推荐查看维基百科 Argon2 - Wikipedia 或者 Argon2算法简介

问题分析

这是我报错代码提示 这是官方issue Cannot install argon2 on windows 10 · Issue #153 · ranisalt/node-argon2 (github.com),看来也有同样的人遇到了和我一样的问题

是否为node版本问题

通过官方issue发现,有人说可能是node版本过高,于是我查看包的信息发现作者发布包时是这样说的 Release v0.31.1 · ranisalt/node-argon2 (github.com)

Note: v0.31.x will be the last version supporting Node v16. Please update to Node v18 or newer.

我的node版本为18所以基本排除版本问题

是否缺少必要包

我发现我没有安装过node-gyp这个包,于是接下来进行第一次尝试

第一次尝试

全局安装node-gyp这个包

css 复制代码
pnpm i node-gyp -g

再次执行

css 复制代码
pnpm i argon2 

安装依然失败

第二次尝试

经过搜索相关问题解决办法,我看到有可能是权限问题,有人说unsafe-perm可以解决,于是我前往npm官网查看相关配置项,找到unsafe-perm详解

增加--unsafe-perm配置项,此方法成功!

css 复制代码
pnpm i argon2 --unsafe-perm

到此问题解决,下面来讲解这个参数的含义,想要深入了解的可以继续往下看。

这是关于此问题在 stackoverflow 中的描述 点击前往查看

如果你使用sudo命令来全局安装一个npm包,那么你可能需要加上--unsafe-perm选项,否则可能会出现警告或错误。这是因为npm默认会在安装包之前,将当前用户切换为nobody用户,以避免潜在的安全风险。但是,这样做可能会导致一些需要系统权限的操作失败,比如编译二进制文件等

如果你使用--unsafe-perm选项,那么npm就不会切换用户,而是直接以root用户运行包脚本。这样可以避免一些安装失败的问题,但是也会增加一些安全风险,因为你相当于信任了这个包的脚本不会做任何恶意的事情。

其他问题

有的小伙伴遇到的报错信息可能会提示你没有安装python环境,按照提示再进行安装python即可

总结

至此,关于安装argon2的问题基本解决,本文为您提供一种在node环境下解决安装argon2失败的思路和方法,具体情况还请根据实际情况调整,希望大家能通过本篇文章厘清解决问题的思路。

相关推荐
程序定小飞1 天前
基于springboot的健身房管理系统开发与设计
java·spring boot·后端
Moonbit1 天前
你行你上!MoonBit LOGO 重构有奖征集令
前端·后端·设计
水冗水孚1 天前
效能工具(九)之编写nodejs脚本使用get-video-duration批量读取视频时长,并生成sql语句修复数据库表字段值
sql·node.js
华仔啊1 天前
开源一款 SpringBoot3 + Vue3 数据库文档工具,自动生成 Markdown/HTML
vue.js·spring boot·后端
Lethehong1 天前
百万迁移费成历史?金仓数据库“零代码”替换Oracle,我们扒了扒它的技术底牌
后端·mysql·架构
吴祖贤1 天前
5.1Spring AI Ollama 嵌入模型
后端
合作小小程序员小小店1 天前
web网页开发,在线%就业信息管理%系统,基于idea,html,layui,java,springboot,mysql。
java·前端·spring boot·后端·intellij-idea
huangql5201 天前
Vite与Webpack完全指南:从零开始理解前端构建工具
前端·webpack·node.js
Yefimov1 天前
8. DPDK:多队列与流分类
后端·网络协议
api_180079054601 天前
【技术教程】Python/Node.js 调用拼多多商品详情 API 示例详解
大数据·开发语言·python·数据挖掘·node.js