本篇文章给大家介绍一下多个nodejs下指定nodejs版本运行项目的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
就像标题说的,我们服务上面有多个nodejs项目,并且需要部署,每个nodejs所需要的版本都不一样(一个12.8.0,一个6.3.0,一个8.11.1)
如果从传统做法来看有nvs,nvm,pm2等,工具虽好,但是我总觉得麻烦。学习工具又累,而且需要时间。
还有就是我目前选择的框架是eggjs,egg官方已经帮你把关于多进程,等性能优化做的很好了(阿里双十一就是采用的这种方案),我不需要再用别的工具帮我去优化性能,我这么小一个站点也不需要。
相关推荐:《nodejs 教程》
我不断的百度,然而百度我只能看到阿里的解决方案。没有更多了(沮丧)
然后我就想,首先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模块,也能达到效果
更多编程相关知识,请访问:编程视频!!
Atas ialah kandungan terperinci 详解多个node版本下如何指定版本运行项目?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!