今天的话题包括2个部分

    • node.js 下使用 nvm 或者 n 来进行版本控制
    • nvm 安装node.js 版本后,重启终端 node , npm 环境变量失效

第一部分 用什么来管理 node.js 版本

首先应该欢呼庆祝一下 node.js 终于发布了有历史意义的正式版 1.0 ,虽然我们看到的是V4.0,其实他就是node.js 真正意义的 1.0, io.js 不负众望,完成了它的使命.

回头看这几年node.js 以及 io.js 的发展速度,各种版本的迭代发布,我们很有必要用一个 node.js 的版本管理工具来控制当前系统的 node.js 版本.

为什么这样做?

在新的版本中已经用上了最新的V8引擎,ES 6的所有新特性一展身手,你能忍得住吗? 但是,如果你鲁莽升级,第一个问题是 你的开发环境和线上发布环境可能不一样,那么后果就不用多少了,出了问题 等着老板来鞭尸吧. 第二个问题 可能是之前的一些开源包需要重新编译,尤其是 c++ 模块写的.

所以,你需要一个 node.js 的版本管理软件

现在流行的 node.js 版本管理有哪些?

nvm

我们使用 brew 安装 nvm brew install nvm

  • 这里要注意

brew 安装后一定要在你的 bash 或者 zsh 配置文件中设置一下,否则 当你重新启动终端,你会发现 node ,npm 环境变量都失效了

这里要穿插说一下我们要分享的第二个话题

nvm 重启后终端 node ,npm 失效的解决方案


如果你使用了上面的 brew 的安装方法 当安装成功后,请按照如下操作设置你的 shell 配置文件


brew info nvm

你会看到下面的输出帮助信息

nvm: stable 0.26.1 (bottled), HEAD
Manage multiple Node.js versions
https://github.com/creationix/nvm
/usr/local/Cellar/nvm/0.26.1 (3173 files, 56M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/nvm.rb
==> Caveats
Add NVM's working directory to your $HOME path (if it doesn't exist): mkdir ~/.nvm Copy nvm-exec to NVM's working directory cp $(brew --prefix nvm)/nvm-exec ~/.nvm/ Add the following to $HOME/.bashrc, $HOME/.zshrc, or your shell's
equivalent configuration file: export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh Type `nvm help` for further information. Bash completion has been installed to:
/usr/local/etc/bash_completion.d

我们需要按照上面提供的方法,首先在用户更目录下 创建 .nvm 文件
mkdir ~/.nvm

然后把 nvm-exec 文件拷贝到你刚才新建的 .nvm 目录下
cp $(brew --prefix nvm)/nvm-exec ~/.nvm/

然后去编辑你的 bash 配置文件 $HOME/.bashrc ,如果你 使用 zsh 那么编辑 $HOME/.zshrc 配置文件
nano ~/.bashrc

nano ~/.zshrc

把下面的内容粘贴进去

export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

最后让你的 shell 配置及时生效 source ~/.bashrc 或 `source ~/.zshrc’

最后你就不会再出现关闭终端重启,或者重启机器发现 node ,npm 等系统环境变量失效的问题了.

nvm 和 n 的区别

nvm 类似于 Python 的 virtualenv 或者 Ruby 的 rvm ,它是一个独立安装的软件 n 其实是一个 npm 全局的开源包 ,需要使用 npm 来全局安装 n 更加轻巧,但是 nvm 更加独立. 假如你有一台新带电脑,如果你想使用 版本管理,那么 nvm 是你的选择,因为它的独立的软件,安装后你可以随意下载切换你需要的版本. 但是 n 是依赖在 npm 下的一个包,也就是说 你的电脑环境还没有 node / npm 的时候,你还用不了 n . 所以在使用的时候,大家可以针对自己的情况权衡.我本人使用 nvm 来控制 node 版本.

nvm 使用

查看可以安装的版本 nvm ls-remote

查看已经安装的版本 nvm ls

安装一个指定的版本 nvm install <version>

上面的 version 可以指定你在 nvm ls-remote 里面列出来的版本号即可

删除指定版本 nvm use <version>

n 的安装

npm install -g n

当然,你还可以去 github 下载你的源代码自己本地编译

$ git clone https://github.com/visionmedia/n.git
$ cd n
$ [sudo] make install

n 安装指定版本 n stable/laster/< version>

在 n 后面更一个标识 stable 标识最新稳定版, laster 标识最新版 ,<version> 就是你可以具体指定一个版本号

n 使用一个版本 n use <version>

n 删除一个版本 n rm <version>

出自:node.js 版本控制 nvm 和 n 使用 及 nvm 重启终端失效的解决方法

ode.js 版本控制 nvm 和 n 使用 及 nvm 重启终端失效的解决方法的更多相关文章

  1. nvm 装 nodejs 重启终端失效的解决方法

    (1) 安装 nvm wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash (2) ...

  2. Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法

    Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法 2014-03-27 11:44:46|  分类: Easy UI|举报|字号 订阅     可以使用$.parser.pa ...

  3. Windows上安装nodejs版本管理器nvm 安装成功之后重启终端失效

    nvm 安装成功之后重启终端失效(command not found) 安装nvm之后node不可用,“node”不是内部或外部命令,也不是可运行的程序或批处理文件(ng) 安装nvm: 下载nvm压 ...

  4. 【 D3.js 进阶系列 — 1.2 】 读取 CSV 文件时乱码的解决方法

    在 D3 中使用 d3.csv 读取 CSV 文件时,有时会出现乱码问题. 怎么解决呢? 1. 乱码问题 使用 d3.csv 读取 xxx.csv 文件时.假设 xxx.csv 文件使用的是 UTF- ...

  5. JS高程中的垃圾回收机制与常见内存泄露的解决方法

    起因是因为想了解闭包的内存泄露机制,然后想起<js高级程序设计>中有关于垃圾回收机制的解析,之前没有很懂,过一年回头再看就懂了,写篇博客与大家分享一下. #内存的生命周期: 分配你所需要的 ...

  6. JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  7. 【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  8. 黄聪:jquery mobile通过a标签页面跳转后,样式丢失、js失效的解决方法

    问题描述: 用ajax跳转的时候,从a.html跳转到b.html后,b.html的css以及js都失效了. 解决办法1: 将所有的css以及js全部放在div内. 原理: 由于jqm的ajax跳转的 ...

  9. Idea使用记录--每次修改JS文件都需要重启Idea才能生效解决方法

    最近开始使用Idea,有些地方的确比eclipse方便.但是我发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便.我想Idea肯定有设置的方法,不可能 ...

随机推荐

  1. 【caffe-windows】 caffe-master 之 classfication_demo.m 超详细分析

    classification_demo.m 是个很好的学习资料,了解这个代码之后,就能在matlab里用训练好的model对输入图像进行分类了,而且我在里边还学到了oversample的实例,终于了解 ...

  2. Android7.0 拨号盘应用源码分析(一) 界面浅析

    前言 android拨号盘的源码目录在package/app/Dialer 自7.0以后Incallui的源码直接放到了Dialer目录下,虽然在7.0以前incallui有自己独立的目录,但实际编译 ...

  3. memcached搭建缓存系统

    Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能. 二.适用场合 1.分布式应用.由于memca ...

  4. 学习记录 java 链表知识

    01.import java.util.HashMap; 02.import java.util.Scanner; 03.import java.util.Stack; 04. 05./** 06. ...

  5. line-height的小技巧

    CSS中的line-height属性控制着文字的行间距离.通常被设置为一个无单位的值(例如:line-height:1.4),与文字尺寸是成比例的.它是排版中的一个重要的属性.太低了文字会挤在一起,太 ...

  6. AX 利用windows粘贴板功能实现批量数据快速导出EXCEL

    static void test(Args _args) { int lineNum; int titleLines; SysExcelApplication excel; SysExcelWorkb ...

  7. jQuery之Nestable

    空间属性置顶: 属性 说明 change 事件,当控件改变时触发 nestable 方法,获取顺序JSON数据,形式如下: [{"id":1},{"id":2} ...

  8. 【python】基础

    [字符串]前后引号必须要匹配,相关函数int(),float(),str(),repr(),format(),还有切片运算符 a = 'text'           单引号指定的字符串必须在一个逻辑 ...

  9. 【MySQL】触发器学习

    MySQL手册中对触发器的定义是: 触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象.表必须是永久性表,不能将触发程序与临时表与视图关联起来. 相同触发程序动作时间和事件的给定表 ...

  10. JUnit + Mockito 单元测试(二)

    摘自: http://blog.csdn.net/zhangxin09/article/details/42422643 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 入门 ...