本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。

苏南大叔通过npm安装typescript解释器的时候,碰到了一个非常奇怪的错误,提示信息是关于readableHighWaterMark的。那么,如何解决这个很奇怪的问题呢?

苏南大叔:npm安装大文件,如何解决readableHighWaterMark报错? - npm-install-error
npm安装大文件,如何解决readableHighWaterMark报错?(图3-1)

本文测试环境:win10node@14.2.0npm@6.14.4

报错提示

苏南大叔的主要目的是安装typescript,所以执行的命令,如下:

npm i typescript -D

得到的报错信息如下:

npm ERR! code ERR_INVALID_OPT_VALUE
npm ERR! The value "false" is invalid for option "readableHighWaterMark"

苏南大叔:npm安装大文件,如何解决readableHighWaterMark报错? - npm-error-log
npm安装大文件,如何解决readableHighWaterMark报错?(图3-2)

修改cache.js

根据网络提示,是需要修改全局包make-fetch-happencache.js文件。所以,苏南大叔,按着以往经验,找到了本机的全局包的位置。但是,奇怪的事情发生了,这个位置下,根本就没有这个文件(夹)make-fetch-happen。仔细查看了这个错误提示信息之后,在报错日志的详情里面,看到了另外一个make-fetch-happen的位置,原来是别有洞天啊。

苏南大叔得到的路径是:

D:\Program Files\nodejs\node_modules\npm\node_modules\make-fetch-happen\

苏南大叔:npm安装大文件,如何解决readableHighWaterMark报错? - npm-error-cache-max
npm安装大文件,如何解决readableHighWaterMark报错?(图3-3)

打开cache.js。找到如下的代码字样:

const MAX_MEM_SIZE = 5 * 1024 * 1024 // 5MB

把默认的5改成一个大点的值,苏南大叔这里修改的是25。这个值可以看您的实际情况进行修改。总体的思路就是:npm要下载一个大文件,但是这里有个最大文件的限制。所以,不难下载比较大的文件了。

const MAX_MEM_SIZE = 25 * 1024 * 1024 // 25MB

修改完成后,再次执行npm命令下载typescript。成功!如果想再次复现这个问题,除了修复cache.js文件外,还需要清空本地缓存!

相关链接

总结

这个npm安装问题,是非常的罕见。只有安装较大文件的时候,才会触发。而npm安装的文件,一般都不会太大。所以,这个typescript是个个案。

更多npm相关文章,请点击苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。