ode.js 版本控制 nvm 和 n 使用 及 nvm 重启终端失效的解决方法
今天的话题包括2个部分
第一部分 用什么来管理 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>
你可能感兴趣
ode.js 版本控制 nvm 和 n 使用 及 nvm 重启终端失效的解决方法的更多相关文章
- nvm 装 nodejs 重启终端失效的解决方法
(1) 安装 nvm wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash (2) ...
- Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法
Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法 2014-03-27 11:44:46| 分类: Easy UI|举报|字号 订阅 可以使用$.parser.pa ...
- Windows上安装nodejs版本管理器nvm 安装成功之后重启终端失效
nvm 安装成功之后重启终端失效(command not found) 安装nvm之后node不可用,“node”不是内部或外部命令,也不是可运行的程序或批处理文件(ng) 安装nvm: 下载nvm压 ...
- 【 D3.js 进阶系列 — 1.2 】 读取 CSV 文件时乱码的解决方法
在 D3 中使用 d3.csv 读取 CSV 文件时,有时会出现乱码问题. 怎么解决呢? 1. 乱码问题 使用 d3.csv 读取 xxx.csv 文件时.假设 xxx.csv 文件使用的是 UTF- ...
- JS高程中的垃圾回收机制与常见内存泄露的解决方法
起因是因为想了解闭包的内存泄露机制,然后想起<js高级程序设计>中有关于垃圾回收机制的解析,之前没有很懂,过一年回头再看就懂了,写篇博客与大家分享一下. #内存的生命周期: 分配你所需要的 ...
- JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- 【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- 黄聪:jquery mobile通过a标签页面跳转后,样式丢失、js失效的解决方法
问题描述: 用ajax跳转的时候,从a.html跳转到b.html后,b.html的css以及js都失效了. 解决办法1: 将所有的css以及js全部放在div内. 原理: 由于jqm的ajax跳转的 ...
- Idea使用记录--每次修改JS文件都需要重启Idea才能生效解决方法
最近开始使用Idea,有些地方的确比eclipse方便.但是我发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便.我想Idea肯定有设置的方法,不可能 ...
随机推荐
- C#中的委托,匿名方法和Lambda表达式
简介 在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我想下面的代码能证实这点.下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=.答案是6个Firs ...
- Xcode去除某种类型的警告
首先来看下当有警告时,怎么找到警告类型,在某条警告上,右键—>Reveal in Log 下面 [ ] 中间就是警告信息 去除警告信息的几种方式: 一.使用编译器提供的宏 ...
- js实现简单的滑动门和tab选项卡
思想:首先定义三个选项卡,可以用任何标签,只要如下图, 一共有三个ul,第一个ul给一个class,因为默认第一个选项卡的内容显示出来, 其他两个ul display:none: 当我鼠标移到第二个 ...
- 由多次使用Statement实例引起的Result set already closed异常的解决方案
在不同版本的Weblogic平台上迁移应用,产生了很严重的JDBC驱动版本不兼容的问题. 但是归根究底是代码的问题,废话少说,上代码示例. ..... //以下是问题代码 ResultSet rs=n ...
- 学习总结 for循环语句的应用
for(初始值:条件表达式:状态改变) { } \n 表示换行 \ttab键 \\写出一个斜杠 例题解释 // 输出一个数,打印一到n出来 int n = int.Parse(Console. ...
- 服务器bonding
server cat /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 IPADDR=211.98.243.231 NETMASK=255 ...
- 深入了解Qt(二)之元对象系统(Meta-Object System)
深入了解Qt主要内容来源于Inside Qt系列,本文做了部分删改,以便于理解.在此向原作者表示感谢! 在Qt Meta Object System-元对象系统这篇文章中,从底层实现的源码剖析了元对象 ...
- verilog实现奇数倍分频
在学习FPGA的过程中,最简单最基本的实验应该就是分频器了, 同时分频器也是FPGA设计中使用频率非常高的基本设计之一, 尽管在芯片厂家提供的IDE中集成了锁相环IP, 如altera 的PLL,Xi ...
- WP8——页面跳转方法
1.页面传值: this.NavigationService.Navigate(new Uri("/SecondPage.xaml?CustomerId=1234&Product ...
- Linux:两台服务器之间添加信任关系,进行远程操作的时候不需要输入密码
两台机器之间建立信任关系的步骤: 1. 在机器1上root用户执行ssh-keygen命令,生成建立安全信任关系的证书,直接Enter [root@CentOS64-x64 ~]# ssh-keyge ...