npm使用记录三

标签: Nodejs 分类: Javascript 创建时间:2020-11-28 14:29:12 更新时间:2023-10-20 11:23:27

1.更新包

通常,我们使用npm update命令更新一个包。那如果要同时更新所有的包呢?就要使用ncu命令了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## 查询那些包过期了,前提是能连接到npm住服务器,我到是不行的,尝试了很多次,都不行,连接不到npm服务器
npm -g outdated

## 指定层级
npm -g outdated --parseable --depth=0

## 使用ncu
npm install -g npm-check-updates
## 检查
ncu
## or
npm-check-updates
## 更新全部
ncu -u

## or npm-check
npm install -g npm-check

## 查看全局安装包
npm list -g --depth 0
参考文章:
1.npm 依赖包的安装、更新、删除 (使用npm-check-updates工具)
2.npm-update (使用原生的npm update命令)
3.npm升级所有的依赖包 (使用npm-check工具)

3.primordials is not defined

在安装mxGraph-editor的时候,出现了:primordials is not defined.

解决方法:这个问题原因时node版本过高或者gulp版本过低,可以回退node版本到11.15以下,或者升级gulp版本到4以上。接下来介绍的是不需要回退node版本或者升级gulp的方法:

参考文章:
1.解决ReferenceError: primordials is not defined问题 (这里讲了两种不需要升级gulp或者是降级node的方法,一种是使用npm-shrinkwrap,一种是:npx npm-force-resolutions)
2.运行gulp项目报错:AssertionError: Task function must be specified。

4.building for production…Killed

服务器上执行npm run build,没有生成任何结果输出,直接就killed了。

原因是因为内存不够用了。

解决办法:等会,等会。

5.调试开发包里面的代码

有时候需要修改npm安装的包里面的源码,可以直接修改 dist 目录下的源码,而不是src目录下的源码。当然也可以使用src目录下的文件。

1
2
3
4
5
6
7
// 正确
import {stylefunction} from 'ol-mapbox-style';
// or
import {stylefunction} from '/node_modules/ol-mapbox-style/dist';

// 错误
import {stylefunction} from '/node_modules/ol-mapbox-style/src/stylefunction.js';

注意,还有一种方式无法生效,就是我实际修改的是 src 目录的文件,但是在 dev 的时候,引用的却是 .pnpm 目录下的包的源码,这个问题非常的纳闷,我改过了源码,但是总是无法生效。

【尝试】
1.我尝试在构建的时候,添加了 vite –force 选项,还是无济于事,我只能从 “import {stylefunction} from ‘ol-mapbox-style’;” 和 “import {stylefunction} from ‘/node_modules/ol-mapbox-style/dist’;” 两者来回的切换,以便使自己在 stylefunction 中进行的改变生效。但是有时候也并不是总是有用。
2.我尝试删除了 .vite 文件夹,还是不行。
3.我删除了 node_modules 文件夹下的 .pnpm 文件夹,也无济于事。
4.我禁用了浏览器的的 Network 缓存。

【解决方案】
重启:pnpm dev,但是这个方法还是有待商榷的。

经过尝试,步骤应该是这个样子的,要想让 node_modules 开发包中的代码修改后生效。
(1) 禁用浏览器 Network 面板的缓存。
(2) 修改 ol-mapbox-style 包下的dist文件夹下的 indes.js 文件。
(3) 使用pnpm dev, 重启 vite 服务器

参考文章:
1.如何方便的在本地调试npm包
2.pnpm clear cache
3.依赖预构建 如果出于某些原因你想要强制 Vite 重新构建依赖项,你可以在启动开发服务器时指定 –force 选项,或手动删除 node_modules/.vite 缓存目录。
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。