多个nodejs下指定nodejs版本运行项目,指定nodejs版本运行项目

前言:

很早之前nodejs就出来了,大家在运行项目的时候都是一个nodejs走天下。服务器上面也是一个nodejs环境。但是大家都应该知道,如果电脑上面已经存在nodejs了那么就不能装第二个了。那么我的项目和别人的项目环境不一样,会不会出问题呢。很负责的说,如果你们两个的环境不一致那么就会出问题。所以我们正确的部署nodejs项目的方式应该和java等项目一样,所有包文件和项目文件要开发的时候什么样子,那么上线的时候什么样子。所以不再是在服务器上面再去npm install了。

具体原因看这里:

为什么不能在服务器上面运行npm install

https://www.yuque.com/egg/nodejs/should-not-npm-install-online

然后我这篇文章的灵感实际上早在三年前就有了,但是那会没有进入开发行业,所以一直就搁置了。近半年做了前端开发,nodejs也不能落下,如果你是一个有梦想的前端那么nodejs就必学不可了。如果还需要用nodejs部署项目并且运行的话,那么就更加需要看这篇文章了。

其中阿里的做法:

看这篇文章

https://www.yuque.com/egg/nodejs/node-multi-versioning

同样在eggjs官网关于部署方面也有说明,需要的同学自己去eggjs官网的部署部分去看看。

我的做法更加官方,并且兼容windows和linux,阿里的做法是不兼容linux的。

正文 

就像标题说的,我们服务上面有多个nodejs项目,并且需要部署,每个nodejs所需要的版本都不一样(一个12.8.0,一个6.3.0,一个8.11.1)

如果从传统做法来看有nvsnvm,pm2等,工具虽好,但是我总觉得麻烦。学习工具又累,而且需要时间。

还有就是我目前选择的框架是eggjs,egg官方已经帮你把关于多进程,等性能优化做的很好了(阿里双十一就是采用的这种方案),我不需要再用别的工具帮我去优化性能,我这么小一个站点也不需要。

解决的过程

我不断的百度,然而百度我只能看到阿里的解决方案。没有更多了(沮丧)

然后我就想,首先nodejs运行js文件必须是在node环境下面,需要执行node命令的,如果电脑已经装过nodejs那么其实你直接用npm命令就在安装的这个nodejs的大环境下(假设为6.0.0),但是你的项目要10.0.0以上才可以运行。

那么第一,我知道一个nodejs官网的包,并且同步更新官网版本,应该也是官网维护吧

包名称:node https://www.npmjs.com/package/node

安装之后可以通过npx node@4 你的js文件 来运行js

但是我试了很久无法通过这个命令来执行node_modules下面的包文件(命令的原理其实就是node命令,差别在于一个是你安装当当前运行环境了的,不会因为外层变化而变化)

后来又是不断的百度和尝试。始终找不到解决方式。

但是我想到一件事情,webstrom是可以帮你启动项目的。

看到没有,webstrom的启动nodejs本身就是指定nodejs版本的。就是说webstrom的启动方式就是我们所需要的启动方式。

然后就想,webstrom启动的命令是什么。(脑子笨了半天)其实启动一下就看到了

截图:

看截图,上面这部分就是webstrom的启动方式。

但是你直接拿这个命令去cmd下面启动是没用的,切换盘符也没用。

最终解决方案

 第一:需要在cmd下面切换到项目的目录下面

如图(和package.json同一个目录下面):

第二:找到你安装的node包

第三:分析刚才的执行命令

F:\ItemSet\egg-project\dream-backend\node_modules\node\bin\node.exe F:\nodejs\node_modules\npm\bin\npm-cli.js run start --scripts-prepend-node-path=auto

通过分析得到

第一部分是你的包名称路径一直到node.exe

第二部分是你的npm安装的npm-cli.js文件位置

第三部分是run,运行命令

第四部分:start 在package.json上面定义的启动脚本命令

如图:

第五部分:--scripts-prepend-node-path=auto(我也不知道干啥的。大神请指教)

然后直接拷贝一下

运行:

看截图(已经成功运行了)

 

所以这就是最终解决方式了。

用最原始的node运行方式得到一个项目指定nodejs运行的环境。这样,你的电脑上面只要有任意一个nodejs环境都可以运行了。

注意npm必须要安装nodejs才有,所以是任意版本的nodejs

这里有一个问题,因为包安装的node文件是node.exe,说实在我不知道linux下行不行,但是node这个包应该是官方的包。希望也兼容linux。那么就是跨平台的了。不行大家可以用阿里的nodeinstall模块,也能达到效果

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值