• 技术文章 >web前端 >js教程

    详解多个node版本下如何指定版本运行项目?

    青灯夜游青灯夜游2021-04-06 10:59:42转载49
    本篇文章给大家介绍一下多个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模块,也能达到效果

    更多编程相关知识,请访问:编程视频!!

    以上就是详解多个node版本下如何指定版本运行项目?的详细内容,更多请关注php中文网其它相关文章!

    本文转载于:csdn,如有侵犯,请联系a@php.cn删除
    专题推荐:nodejs
    上一篇:前端面试之6种经典排序算法的实现,你会几种?( 附动图+视频) 下一篇:浅谈Angular10中的新功能
    第15期线上培训班

    相关文章推荐

    • 浅谈Nodejs中Set和Map的用法• 浅谈Nodejs中内置模块的基本用法• 详解Node.js异步迭代器及其使用方法• 详解Nodejs+express模块创建一个服务器的方法• node sass是干嘛的

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网