npm安装包错误|npm安装包错误 (bcrypt )

概述 通过npm官网下载三方安装包
偶尔会出现安装失败的情况
即便是安装完毕,且在package.json已经存在依赖项目,但是其实node_modules中也存在缺少核心文件的情况,在运行时候会报错
一般出现这个情况,可以查看下npm官网上的包信息
包的版本,是否符合环境的版本
查看:
Version Compatibility(版本兼容性)
以bcrypt为例,其版本需要node版本与之适应,如:

Node Version Bcrypt Version
8 >= 1.0.3
10, 11 >= 3
12 >= 3.0.6
报错信息:
gyp ERR! stack Error: "pre" versions of node cannot be installed, use the --nodedir flag instead
安装包是否有无安装必备的电脑环境变量
查看:
Dependencies (依赖项)
以bcrypt为例,依赖项如下等:
NodeJS node-gyp Python 2.x

报错信息:
缺少python环境
注:
有的包存在明确的版本号,如 Python 2.x ,其环境版本信息要符合要求
安装 bcrypt 失败 (典型例子) 【npm安装包错误|npm安装包错误 (bcrypt )】【 问题的原因】:
  • 缺少python2.x环境引起的问题
    下载:
https://www.python.org/downloads/release/python-2716/

安装:(注意勾选添加环境变量)

npm安装包错误|npm安装包错误 (bcrypt )
文章图片
添加至环境变量 默认是阻止添加到环境变量的,
如果选择默认,后续自行添加python到系统环境变量会失败(重启也不好使,不知道原因)
  • 在已经添加python环境的情况下,仍警告,且报错,添加失败
node-pre-gyp WARN Using needle for node-pre-gyp https download node-pre-gyp WARN Tried to download(404): https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.7/bcrypt_lib-v3.0.7-node-v64-win32-x64-unknown.tar.gz node-pre-gyp WARN Pre-built binaries not found for bcrypt@3.0.7 and node@10.16.0 (node-v64 ABI, unknown) (falling back to source compile with node-gyp)

总是说这个404
https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.7/bcrypt_lib-v3.0.7-node-v64-win32-x64-unknown.tar.gz
【解决方法】:
1.打开命令窗口法1(管理员身份打开cmd)
找到(C:\WINDOWS\system32\cmd.exe)文件,右键以管理员身份运行
1.2.打开命令窗口法2 (使用管理员身份打开powerShell)

npm安装包错误|npm安装包错误 (bcrypt )
文章图片
powerShell管理员运行 1.3 补充 两者区别
PowerShell是跨平台的,cmd是Windows专用的。
PowerShell有面向对象的管道。
PowerShell能够调用.NET的很多功能
2.安装node 的Python的编译
npm install -g node-gyp
3.添加window构建工具(Visual Studio Build Tools)
如果已经安装了python就不再安装了,
如果没有安装,会进行自动安装
npm install --global --production windows-build-tools

npm安装包错误|npm安装包错误 (bcrypt )
文章图片
安装VS构建工具
4.如果是上一步,自动安装的python,需要手动配置项目python环境
npm config set python Python 2.7.16 (Python 2.7.16 你安装的版本号)

npm config set python "D:\mysoft\python\python.exe"(python.exe 你安装的执行文件地址)
  • 再次尝试npm install bcrypt -S,
1.如果安装不成功,仍警告,仍报错
解决方法:
使用 cnpm install bcrypt -S ,应该可以安装成功了
2.如果单纯是警告,不在报错,则可以忽略了
node-pre-gyp WARN Using needle for node-pre-gyp https download node-pre-gyp WARN Tried to download(404): https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.7/bcrypt_lib-v3.0.7-node-v64-win32-x64-unknown.tar.gz node-pre-gyp WARN Pre-built binaries not found for bcrypt@3.0.7 and node@10.16.0 (node-v64 ABI, unknown) (falling back to source compile with node-gyp)+ bcrypt@3.0.7 added 57 packages from 46 contributors and audited 296 packages in 36.877s found 0 vulnerabilities

终于安装成功了~~~!
疑问:
不太明白,为什么在npm上 bcrypt的依赖项目中 标明了Python 2.x,
在安装了 Python 2.7.16 且添加至环境变量的情况下,
使用npm安装,依然去找一个https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.7/bcrypt_lib-v3.0.7-node-v64-win32-x64-unknown.tar.gz,然后给你报错
在linux的centos下,安装"bcrypt": "^3.0.7" 版本错误 1.通过npm三方包 n , 将nodejs版本降低到 v10.16.0
2.通过 使用 yum update 指令更新 python版本
3.查看路径 usr/lib/下的python版本 如果为2.7
测试没问题, 而nodejs最新12+版本报错

    推荐阅读