大家好,苏南大叔这次写一篇水文。主题就是:electron命令的运行方法。比如:全局安装了个electron,项目下面还安装了一个electron。那么最终你究竟你运行的是哪个electron呢?不少新人都傻傻的不清楚了。因为有的时候,版本不一致会导致很多意料之外的情况发生,所以,不如静下心来想一想,究竟是哪个electron程序体在运行?

苏南大叔:究竟运行的是哪个electron? 教你辨别真假electron - electron-which-one
究竟运行的是哪个electron? 教你辨别真假electron(图4-1)

本文测试环境:mac/win10

背景信息

假设执行命令如下:

npm i electron@1.7.9 -g
npm i electon@3.1.4 -D

那么,全局模式下有个1.7.9版本的electron,而项目目录下有个3.1.4版本的electron

对于后者3.1.4,存在于node_modules/.bin/目录下面,如果是win环境,那么在项目下面会有个electron.cmd文件。而如果是mac环境,就有会有个electron文件。

苏南大叔:究竟运行的是哪个electron? 教你辨别真假electron - electron-which-one-bg
究竟运行的是哪个electron? 教你辨别真假electron(图4-2)

如上是本文的技术背景提示信息。下面大家可以分别看看,各种情况下electron命令的版本了。
主要分为两种情况,一种是electron直接出现在命令行里面。另外一种情况是:electron字样出现在package.json里面,在命令行里面执行:npm run

命令行里面执行electron

现在假设工作目录就是项目的根目录。那么,

electron .
命令行系统版本
electron .mac/win1.7.9
node_modules/.bin/electron .mac3.1.4
node_modules/.bin/electron .win-----
node_modules/.bin/electron.cmd .win-----
node_modules.binelectron .win3.1.4
node_modules.binelectron.cmd .win3.1.4

大体的结论就是:不指明路径的话,electron就指的是全局的electron。指明路径的话,就要注意win下面的路径写法比较特殊些。另外,win下面的.cmd字样,是可写可不写的。

苏南大叔:究竟运行的是哪个electron? 教你辨别真假electron - electron-error-0
究竟运行的是哪个electron? 教你辨别真假electron(图4-3)

上述命令定义在package.json

测试的命令和上面一样,但是定义到了package.json里面。用scripts定义为start命令。那么上述测试命令的结果又会是如何呢?

npm start

package.json:

"scripts": {
    "start": "electron .",
}
命令行系统版本
electron .mac/win3.1.4
node_modules/.bin/electron .mac3.1.4
node_modules/.bin/electron .win3.1.4
node_modules/.bin/electron.cmd .win3.1.4
node_modules.binelectron .win-----
node_modules.binelectron.cmd .win-----
node_modules\.bin\electron .win3.1.4
node_modules\.bin\electron.cmd .win3.1.4

苏南大叔:究竟运行的是哪个electron? 教你辨别真假electron - electron-error-1
究竟运行的是哪个electron? 教你辨别真假electron(图4-4)

那么,如果项目下没有安装3.1.4electron呢?还是执行npm run命令。

npm uninstall electron
命令行系统版本
electron .mac/win1.7.9
node_modules/.bin/electron .mac-----
node_modules/.bin/electron .win-----
node_modules/.bin/electron.cmd .win-----
node_modules.binelectron .win-----
node_modules.binelectron.cmd .win-----
node_modules\.bin\electron .win-----
node_modules\.bin\electron.cmd .win-----

这里面的结论是:写在package.json里面electron字样,优先识别项目根目录下面的electron。在win系统下面,斜线的写法,要进行转义或者变成linux的写法。

总结

就这么两个electron版本,就能把人绕晕。要是electron版本再多,就更晕了。这里,要首先分清electron命令到底是在package.json中定义的,还是在命令行里面自己输入的。

如果是定义在package.json里面的话,这个就很有可能会脱离你的想象了。这个里面的命令是个小的圈子环境,可以自动识别出node_modules/.bin/下面的所有命令。而且可以理解为一个类似unix的环境,至少其中的路径信息的斜线,是按照unix的路径信息解析的。

大概就说这么多,文章有点水,但是新手必看。因为,很多新手会栽倒在这个坑里面。想少掉坑,就要踩在前人的脚印上,脚印的地址是下面的这个,拿好了,保存到收藏夹里面。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   electron

本站的忠实读者小伙伴,正在阅读下面这些文章: