node0.12升级到6.x 实战

简介: 本文介绍node从0.12升级到6.x实战过程。

前几天node官方发布了6.x版本,官方介绍年底将不会维护node0.12,node0.10等版本,由于我们的node项目当前版本是node0.12,所以着手升级一下我们的服务端使用的node版本,打算升级到node6.x,从官网可以看到当前最新的版本是node6.1.0.
下面将记录整个升级node的过程。

安装nvm(node版本管理工具)

  • 安装nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
  • 激活nvm
. ~/.nvm/nvm.sh

设定node镜像源为淘宝的源(速度更快)

export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

安装制定版本的node

  • 查看可用版本
nvm ls-remote
  • 安装指定版本
node install 6.1.0

验证升级结果

运行指令启动程序

node app.js

报错处理

  • 错误显示某些module版本落后
Module version mismatch. Expected 46, got 14 ...
  • 执行npm rebuildnpm update
  • 再次执行node app.js
==== JS stack trace =========================================

Security context: 0x54fd37c9fa9 <JS Object>#0#
    1: .node [module.js:568] [pc=0x2394692a9ce4](this=0x7db1007e01 <an Object with map 0x37d5f043a4f9>#1#,module=0x26b77ba718e9 <a Module with map 0x37d5f041bb79>#2#,filename=0x26b77ba718c1 <String[123]: 
    2: load [module.js:~447] [pc=0x23946911fd36](this=0x26b77ba718e9 <a Module with map 0x37d5f041bb79>#2#,filename=0x26b77ba718c1 <String[123]: 
    3: tryModuleLoad(aka tryModuleLoad) [module.js:415] [pc=0x239468a3899d](this=0x54fd3704189 <undefined>,module=0x26b77ba718e9 <a Module with map 0x37d5f041bb79>#2#,filename=0x26b77ba718c1 <String[123]: 
 2: node::DTraceProbe::Initialize(v8::Local<v8::Object>)
 3: node::DTraceProvider::Initialize(v8::Local<v8::Object>)
 4: node::DLOpen(v8::FunctionCallbackInfo<v8::Value> const&)
 5: v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&))
 6: v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>)
 7: v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*)
 8: 0x23946890961b
  • 访问服务之后确定只是一些报警处理,查询谷神(google)之后发现目前6.x版本对某些弃用的包使用还在支持中(或者修复中),所以如果追求最新的node版本,到此就可以使用了

降低node版本到稳定版本

每次启动程序这么多的warning信息很有友好,所以选用一个稳定的版本很重要,所以降低到稳定版本

  • 运行nvm install 5.11.1node app.js
[Error: Module version mismatch. Expected 47, got 48.]
{ [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
[Error: Module version mismatch. Expected 47, got 48.]
{ [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
  • 重新编译和更新npm build,npm update,node app.js
    最终ok!

小结

  • node6.x暂时不是稳定版本,升级时会遇到一个模块版本不适配的情况,可以通过npm rebuild,npm update,npm install some_module@certain_version解决
  • 建议先使用稳定的版本node5.x
  • 从node0.12升级到node5.x或者node6.x版本的一大好处是,之前的node --harmony可以直接换成node,即5.x和6.x已经很好的支持了ejs6的特性,包括generetor function的使用。
目录
相关文章
|
4月前
|
Ubuntu
node、npm 命令升级
node、npm 命令升级
|
9月前
|
Java Linux 内存技术
node安装&升级思考
前段时间公司d环境挂了,根据报错看到使用的node版本比较低,就想升级一下版本;由于对于node的安装也没有经历过系统的对比,所以最终解决完之后就有了本次的总结
|
2月前
|
缓存 JavaScript
mac升级node到指定版本
mac升级node到指定版本
|
11月前
|
运维 监控 JavaScript
Node.js躬行记(22)——Node环境升级日志
Node.js躬行记(22)——Node环境升级日志
|
开发工具 git Windows
webpack 4升级到 webpack 5 (node 14.6 升级到 node16 引发的问题)
第一次启动项目报错,报错内容是 Node Sass does not yet support your current environment: Windows 64-bit, 这个问题相信大家都清楚, node-sass 出问题了
webpack 4升级到 webpack 5 (node 14.6 升级到 node16 引发的问题)
|
移动开发 JavaScript 内存技术
升级Node版本RN项目运行报错cb.apply is not a function
升级Node版本RN项目运行报错cb.apply is not a function
343 0
升级Node版本RN项目运行报错cb.apply is not a function
|
缓存 JavaScript Linux
linux环境升级node版本
linux环境升级node版本
214 0
Node.js躬行记(17)——UmiJS版本升级
  在2020年我刚到公司的时候,公司使用的版本还是1.0,之后为了引入微前端,迫不得已被动升级。
|
缓存 JavaScript
关于升级最新版本node.js你知道多少?
关于升级最新版本node.js你知道多少?
|
存储 Kubernetes API
k8s1.6伸缩性升级,支持处理5000 Node 和 15 万个 Pod
上个夏天,我们分享了 Kubernetes 的伸缩性更新,经过一番努力,我们自豪的宣布 Kubernetes 1.6 能够处理 5000 个节点的集群和 15 万个 Pod 了;另外即使在这种负载规模下,端到端的 Pod 启动速度依然优于 2000 节点规模的 1.3 版本的 Kubernetes 集群,API 调用的延迟依然满足 1 秒的 SLO。
1466 0