zoukankan      html  css  js  c++  java
  • windows下运行多个版本node.js

      这段时间,一直在处理一个问题。windows下node.js调用dll(c++),用到了ffi,ref,ref-struct模块,在node v0.10.22版本下运行正常,但高版本node下会出错(经测试,0.12.x往上就不好使了): 

    Error: The specified procedure could not be found.
    

      高版本node下重新编译ffi等模块也均告失败,会报出一大堆语法错误之后:

    gyp ERR! build error
    gyp ERR! stack Error: `C:WindowsMicrosoft.NETFrameworkv4.0.30319msbuild.exe` failed with exit c
    ode: 1
    gyp ERR! stack     at ChildProcess.onExit (E:	ools
    vmwv5.5.0
    ode_modules
    ode-gyplibuild.js:2
    76:23)
    gyp ERR! stack     at emitTwo (events.js:87:13)
    gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
    gyp ERR! System Windows_NT 6.1.7601
    gyp ERR! command "E:\tools\nvmw\v5.5.0\node.exe" "E:\tools\nvmw\v5.5.0\node_modules\node-gy
    p\bin\node-gyp.js" "rebuild"
    gyp ERR! cwd D:phpStudyWWW
    es2adalingclient	icketStorage
    ode_modulesffi
    gyp ERR! node -v v5.3.0
    gyp ERR! node-gyp -v v3.3.1
    gyp ERR! not ok
    

      万般无奈之下,想到同时运行两个不同版本的node.js。linux版本下有nvm能达到此目,在windows下我用到了nvmw。

      nvmw下载地址:http://pan.baidu.com/s/1xdmf3, 直接解压缩就行,比如解压到D: vmw文件夹中,将D: vmw vmw.bat添加到系统环境变量中,以便可以到处运行nvmw命令。

      然而问题又来了,nvmw用法如下:

    Usage:
      nvmw help                    Show this message
      nvmw install [version]       Download and install a [version]
      nvmw uninstall [version]     Uninstall a [version]
      nvmw use [version]           Modify PATH to use [version]
      nvmw ls                      List installed versions
    
    Example:
      nvmw install v0.6.0          Install a specific version number
      nvmw use v0.6.0              Use the specific version
    

      但是运行安装命令时,由于国外源的问题,一直安装失败,我换了淘宝的源后也是一直失败。但是,根源无非是得到不同版本的node.exe。我们可以在淘宝源路径上(https://npm.taobao.org/mirrors/node/)手动下载对应版本的node.exe,然后放到D: vmw文件夹中,不同版本文件夹。

    nvmw
        v0.10.22
            node.exe
        v5.3.0
            node.exe
    

      如上安装了两个版本的node,运行nvmw ls:

    C:UsersAdministrator>nvmw ls
    v0.10.22
    v5.3.0
    Current: none
    

      每开一个cmd命令窗口时,如果没有运行nvmw use命令,则无法运行node和npm命令:

    C:UsersAdministrator>node -v
    'node' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    

      如果先指定运行哪个版本node:

    C:UsersAdministrator>nvmw use v0.10.22
    Now using Node v0.10.22
    
    C:UsersAdministrator>node -v
    v0.10.22
    

      每个cmd窗口之间相互独立,想要使用node.js,必须先指定所要运行的版本!多开几个cmd窗口,指定不同的运行版本,就可以在一台电脑上跑多个node.js版本的程序了!

      ps:用以上模块调dll难免会遇到各种各样的问题,毕竟是第三方模块,作者如果后期不进行维护,很难保证在新版本node上好使。nodejs调用dll动态库还可以通过写addon来实现,但是所调用的dll涉及到结构体,较难处理,以及本人c++水平有限,还是没能深入研究。

  • 相关阅读:
    【笔记篇】(理论向)快速傅里叶变换(FFT)学习笔记w
    【学术篇】bzoj2440 [中山市选2011]完全平方数
    【笔记篇】斜率优化dp(五) USACO08MAR土地购(征)买(用)Land Acquisition
    【笔记篇】斜率优化dp(四) ZJOI2007仓库建设
    【笔记篇】斜率优化dp(三) APIO2010特别行动队
    【笔记篇】斜率优化dp(二) SDOI2016征途
    【笔记篇】斜率优化dp(一) HNOI2008玩具装箱
    【笔记篇】单调队列优化dp学习笔记&&luogu2569_bzoj1855股票交♂易
    usr/include/php5/ext/pcre/php_pcre.h:29:18: fatal error: pcre.h 错误解决
    ubuntu 使用apt-get install 安装php5.6--php7
  • 原文地址:https://www.cnblogs.com/age0420/p/5478765.html
Copyright © 2011-2022 走看看