npm 操作零散整理

概述
npm 是 node package manager (node包管理器)
随着node安装,自带的包是系统包,非自带的包,称之为第三方包

npm在国外,cnpm是中国版的npm
安装cnpm - npm install -g cnpm --registry=https://registry.npm.taobao.org

npm的一些配置

  1. 常用配置:
  • 查看包的下载源 - npm get registry
  • 修改npm下载源为淘宝镜像 - 'npm config set registry http://registry.npm.taobao.org' - 已弃用
    公告说明以及新的地址: http://www.npmmirror.com/
  • 修改npm下载源为淘宝镜像 - npm config set registry http://www.npmmirror.com
  • 修改npm下载源为官方源 - npm config set registry http://www.npmjs.org
  1. 通过第三方工具(nrm),来方便切换源
  • 安装 - npm install -g nrm
  • 使用nrm命令nrm ls查看源列表,以及激活的源
* npm -------- https://registry.npmjs.org/
  yarn ------- https://registry.yarnpkg.com/
  cnpm ------- http://r.cnpmjs.org/
  taobao ----- https://registry.npm.taobao.org/
  nj --------- https://registry.nodejitsu.com/
  npmMirror -- https://skimdb.npmjs.com/registry/
  edunpm ----- http://registry.enpmjs.org/

注: * 表示当当前正在使用的源

  • 使用nrm来切换源 - nrm use taobao

常用的系统包

官方文档 - http://nodejs.cn/api/

(一).assert (断言)
格式
assert(条件,结果)
例1:

const assert = require('assert');
assert(10>1,'aaa'); 成立则输出aaa

例2:

assert.deepEqual(变量,预期值,msg);

例3:深度比较 assert.deepStrictEqual(数据1,数据2);

assert.deepStrictEqual({ a: 1 }, { a: '1' });

使用场景:
1.大型项目,众多函数调用情况下,判断某一个流程节点的值,是否正确,符合预期
2.函数传参时候,判断参数情况

(二).path (路径)

  • path.dirname 返回目录名
  • path.extname 返回扩展名
  • path.join() 使用平台特定的分隔符作为定界符将所有给定的 path 片段连接在一起
  • path.parse(path) 将路径字符串转化为对象信息
  • path.resolve(__dirname,'xxx') 将路径或路径片段的序列解析为绝对路径

1.获取文件路径

let res = path.dirname(str); 

2.获取文件拓展名

let res = path.extname(str); 

3.获取文件名

let res = path.basename(str); 

4.path.resolve(路径,文件名);
path.resolve() 方法将路径或路径片段的序列解析为绝对路径
例:获取当前程序执行路径 / 文件名

path.resolve(__dirname,文件名); 

__dirname : 魔术变量 ,未声明情况即可使用

(三).url (网址)
解析路径信息,并将query转化为对象形式
url.parse(路径,true)

(四).querystring (在字符串和对象之间相互转化)
字符串 -> 对象

querystring.parse("a=1&b=2");  //{a:1,b:2}

对象 -> 字符串

querystring.stringify({a:1,b:2});  //a=1&b=2

第三方包

  • es6 - js低版本浏览器兼容
    npm install babel-loader @babel/core @babel/preset-env -D

  • css-loader style-loader - 解析样式,打包写入html的style里
    npm install style-loader css-loader -D

  • css3 - 样式后缀自动添加
    npm install postcss-loader autoprefixer -D

  • file-loader url-loader (依赖file-loader)
    npm install url-loader file-loader -D

  • less - css预处理
    npm install less-loader less -D

  • webpack-dev-server - 热更新调试工具
    npm install webpack webpack-cli webpack-dev-server -D

  • serve - 创建一个静态托管服务器
    如果您想要提供一个静态站点、单页面应用程序或一个静态文件(无论是在您的设备上还是在本地网络上),这个包是您正确的选择
    安装 - npm install serve
    使用 - serve 指定文件夹 - 在指定目录下 serve

安装报错相关

  1. npm 安装报错链接失败
error code ENOTFOUND
error errno ENOTFOUND
error network request to https://npm.***.com/..... failed, reason: getaddrinfo ENOTFOUND npm.***.com npm.***.com:443
error network In most cases you are behind a proxy or have bad network settings.

解决方法:
尝试更换淘宝镜像源 - npm config set registry http://www.npmmirror.com
再安装依赖可能会成功,如果依然连接资源超时
找到 /Users/你的计算机名/.npmrc文件
通过注释掉代理来看看效果

// 这一行前面加#
#proxy=http://xxxx.xxx.xxx.xxx:xxxx
  1. 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 失败 (典型例子)

【 问题的原因】:

  • 缺少python2.x环境引起的问题
    下载:
https://www.python.org/downloads/release/python-2716/

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


添加至环境变量

默认是阻止添加到环境变量的,
如果选择默认,后续自行添加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)


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

安装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+版本报错

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容