解决mac上每次升级nodejs都要重新安装扩展包的问题使用帮助_问题入门基础

虽然有了一些新生派竞品比如yarn,但使用或者习惯了npm的开发者仍然大有人在。以前用起来没注意到这个现象,最近一段时间发现,每次随着使用brew upgrade自动升级了nodejs版本,原来安装的nodejs扩展包就不起作用了,还需要重新安装一遍。再加上一些扩展包存储网站被墙的问题,这个过程真是令人痛不欲生。今天比较闲了研究了一下,发现原来的扩展包都是通

解决mac上每次升级nodejs都要重新安装扩展包的问题使用帮助

虽然有了一些新生派竞品比如yarn,但使用或者习惯了npm的开发者仍然大有人在。

解决mac上每次升级nodejs都要重新安装扩展包的问题使用帮助_问题入门基础

以前用起来没注意到这个现象,最近一段时间发现,每次随着使用brew upgrade自动升级了nodejs版本,原来安装的nodejs扩展包就不起作用了,还需要重新安装一遍。再加上一些扩展包存储网站被墙的问题,这个过程真是令人痛不欲生。
今天比较闲了研究了一下,发现原来的扩展包都是通过npm安装到/usr/local/lib/node_modules目录。这种设置每次升级并不影响不同版本nodejs同扩展包的配合。不过因为命令行的nodejs工具没有导出到执行路径,所以无法直接运行(比如@angular/cli)。所以在当时,我曾经手工在/etc/paths中增加了搜索执行路径:/usr/local/lib/node_modules/bin。

当前的nodejs版本,使用npm安装的扩展包,已经默认安装到了nodejs安装目录之下。使用brew安装的话,这个路径通常是:/usr/local/Cellar/node/xx.xx.xx版本号/。因为不同版本位于不同目录,老版本习惯上又被清理掉了的话,那nodejs扩展包当然也要重新安装了。还有一个同时带来的烦人问题,因为这个路径经常变化,执行文件搜索路径也要每次修改。

知道了原因,解决起来也简单:

#删除掉早期的扩展包路径,这个文件夹实际上已经不使用了
#没有安装过早期版本的话,没有这个路径,当然不用删除
sudo rm -rf /usr/local/lib/node_modules

#自己建立一个扩展包安装路径
sudo mkdir /usr/local/npm
#设置权限
sudo chown $USER:admin /usr/local/npm

#让npm将扩展包安装到指定路径
echo prefix=/usr/local/npm >> ~/.npmrc

#设置执行搜索路径
sudo echo /usr/local/npm/bin >> /etc/paths

这样以后nodejs版本的升级,就不会影响扩展包了。

海计划公众号
(0)
上一篇 2020/03/31 01:58
下一篇 2020/03/31 01:58

您可能感兴趣的内容

  • 一个指令为各大vue组件库的table组件加上动态编辑功能入门基础_指令指南攻略

    一个指令为各大vue组件库的table组件加上动态编辑功能入门基础 写在前面 在现代的vue组件库上实现表格编辑其实不难,它们大都提供了作用域插槽,可以在插槽内插入input组件来…

    2020/03/19
  • 传统diff、react优化diff、vue优化diff基础知识教程_diff入门基础

    传统diff
    计算两颗树形结构差异并进行转换,传统diff算法是这样做的:循环递归每一个节点
    比如左侧树a节点依次进行如下对比,左侧树节点b、c、d、e亦是与右侧树每个节点对比
    算法复杂度能达到O(n^2),n代表节点的个数a->e、a->d、a->b、a->c、a->a查找完差异后还需计算最小转换方式,这其中的原理我没仔细去看,最终达到的算法复杂度是O(n

    2020/03/29
  • html5中二进制对象Blob的使用——Blob与ArrayBuffer、TypeArray和String的相互转换基础指南_blob小白教程

    html5中Blob是什么?在计算机中,Blob常常是数据库中用来存储二进制文件的字段类型,MySQL中的Blob类型就只是个二进制数据容器。在HTML5中,Blob是一种JavaScript的对象类型,Blob对象除了存放二进制数据外还可以设置这个数据的MIME类型,这相当于对文件的存储。一个Blob对象是一个包含只读原始数据的类文件对象。创建Blob对象

    2020/04/05
  • Biomatic UI使用指南_简单,灵活的CSS框架

    Biomatic UI使用指南 官方网址:https://biomatic-ui.com/ GitHub:https://github.com/moonrhythm/biomati…

    2020/03/06
  • Js队列的实现与应用入门教程_算法小白帮助

    队列与栈不同,它遵从先进先出(FIFO——First In First Out)原则,新添加的元素排在队列的尾部,元素只能从队列头部移除。function Queue() {let items = [];// 向队列添加元素(一个或多个)this.enqueue = function (element) {if (element instanceof Arr

    2020/03/29
  • 前端开发,脱离菜鸟层次的二个关键点小白基础_前端作者: web前端教室小白指南

    我个人吧,一直认为学习前端技术是比较简单的事情,只要你真的是一步一个脚印的在前进,那你自然会有相应的结果可以收获。这里面包含二个关键点,一,脚踏实地;二,不断努力。第一个关键点,欲速。许多人不太愿意慢慢的去学习javascript,总是觉得招聘中要求的vue,react,node…等,那我把这些东西学会了,不就ok了嘛。但是,因为javascript的技

    2020/04/06
  • JS中设置cookie,读取cookie,删除cookie小白攻略_cookie入门基础教程

    1.什么是cookie?Cookie 是在您的计算机上存储在小的文本文件中的数据。当 web 服务器向浏览器发送网页后,连接被关闭,服务器会忘记用户的一切。Cookie 是为了解决“如何记住用户信息”而发明的:当用户访问网页时,他的名字可以存储在 cookie 中。下次用户访问该页面时,cookie 会“记住”他的名字。Cookie 保存在名称值(name-

    2020/03/29
  • chosen.js小白指南_基于jquery的下拉选择框美化插件

    chosen.js小白指南 官方网址:http://harvesthq.github.io/chosen/ GitHub:https://github.com/harvesthq/…

    2020/03/06
  • zrender.js小白帮助_一个轻量级的画布库,可为ECharts提供2D绘制

    zrender.js小白帮助 GitHub:https://github.com/ecomfe/zrender 简介描述:一个轻量级的画布库,可为ECharts提供2D绘制 ZZr…

    2020/03/11
  • 8种网站防止盗链的方法基础知识入门_网站小白教程

    作为普通的网民来说,一般不需要知道也不用关心什么是盗链,不过如果你是网站的开发者或维护者,就不得不重视盗链的问题了。如果你刚刚开发完一个没有防盗链的带有文件下载功能的网站,挂上internet,然后上传几个时下非常热门的软件或电影并在网站内公布下载地址,让MSN上的所有好友都来体验一下你的杰作。不用多久就会发现网速出奇地变慢,甚至服务器托管中心的服务员会热情

    2020/04/05
  • js-xlsx小白知识_实现纯JS读写各种电子表格格式

    js-xlsx小白知识 官方网址:https://sheetjs.com/ GitHub:https://github.com/SheetJS/js-xlsx 简介描述:实现纯JS…

    2020/03/07
  • 成年人的100个心酸瞬间菜鸟知识_职业入门基础

    这世上没有完美的工作,更没有完美的人才。一切看似光鲜亮丽的背后,都是不为人知的心酸与孤独。你只看到别人生活质量提高的一面,但只有他们自己知道,工作是如何把他们折磨得面目全非。
    你以为某个行业赚钱轻松,而且挣得非常多,可实际上生命的一切馈赠,都在暗中标好了价格,你需要为此付出多少代价,牺牲多少筹码。
    你可能正在从事下面的职业,也可能对下面某个职业抱有憧憬。三百

    2020/03/30
  • 程序员最喜欢什么样的项目经理?使用指南_项目菜鸟攻略

    在当今的专业环境中,项目经理需要戴上各种帽子,在管理团队的日常功能和理解大局策略之间切换。正因为如此,项目经理对组织变得更有价值,并且他们对技能和战略角色的需求在全球范围内不断增长。但这也提出了一个问题:如何在如此高压的环境中成为更好的项目经理?不幸的是,没有一个技能可以让某人成为一名出色的项目经理。相反,有才能的PM将拥有许多技能,包括采用协作方法、管理时

    2020/04/03
  • js实现交换数组元素位置的方法总汇小白教程_array基础知识入门

    交换数组元素位置是开发项目中经常用到的场景,总结下用过的几种方式。 第三方变量最基础的方式,创建一个变量作为中转。let temp = array[index1];
    array[index1] = array[index2];
    array[index2] = temp;splice方法splice() 方法用于插入、删除或替换数组的元素。如果是删除时,会返

    2020/04/03
  • 在React应用程序中用RegEx测试密码强度菜鸟攻略_密码小白攻略

    尽管一些组织认为应该由用户选择健壮的用户名和密码来保护自己,但是开发人员可以通过将规则包含在程序的设计中来帮助进行良好的密码选择。例如,开发人员可以通过加入进度条、百分比或颜色,来帮助用户在输入密码时规定密码的质量。许多人都知道弱密码很短,并且包含字母或数字,但绝不会同时包含两者。我们也知道强密码包括符号以及区分大小写的字符。那么我们如何在应用程序中检查这些

    2020/03/20
  • 网站seo分析工具小白教程站长工具、seo综合查询推荐_seo基础入门

    这里给大家分享一些常用的网站分析工具,这些工具可以帮助我们了解网站SEO的情况。比如:检测网站死链接、HTML格式检测、蜘蛛访问、网站速度测试、网站域名IP查询、PR 友情链接检查等等百度搜索资源平台全球最大的面向中文互联网管理者、移动开发者、创业者的搜索流量管理的官方平台。提供有助于搜索引擎收录的工具、SEO建议、API接口、多端适配服务的能力等。 使用百

    2020/04/05