亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

利用Node.js編寫跨平臺的spawn語句詳解

2019-11-19 17:37:56
字體:
來源:轉載
供稿:網友

前言

Node.js 是跨平臺的,也就是說它能運行在 Windows、OSX 和 Linux 平臺上。很多 Node.js 開發者都是在 OSX 上做開發的,然后再將代碼部署到 Linux 服務器上。由于 OSX 和 Linux 都是基于 Unix 的,因此兩者共性很多。Windows 也是 Node.js 官方支持的平臺,只要你通過正確的方式寫代碼,就能在各個平臺上毫無壓力的跑起來。

Node.js 的子進程 (child_process) 模塊下有一 spawn 函數,可以用于調用系統上的命令,如在 Linux, macOS 等系統上,我們可以執行

const spawn = require('child_process').spawn;spawn('npm', { stdio: 'inherit'});

來調用 npm 命令。

然而,同樣的語句在 Windows 上執行則會報錯。

Error: spawn npm ENOENT at exports._errnoException (util.js:855:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32) at onErrorNT (internal/child_process.js:344:16) at nextTickCallbackWith2Args (node.js:455:9) at process._tickCallback (node.js:369:17) at Function.Module.runMain (module.js:432:11) at startup (node.js:141:18) at node.js:980:3

因為在 Windows 上,當我們執行 npm 時,我們實際執行的是 npm.cmd 批處理,而在 Windows 上, .cmd,  .bat 批處理是無法脫離 cmd.exe 這一解釋器而單獨運行的。

因此,我們需要顯式地調用 cmd

spawn('cmd', ['/c', 'npm'], { stdio: 'inherit'});

或者使用在調用 spawn 函數時,設置 shell 選項為 true 以隱式地調用 cmd (該選項添加自 Node.js v6 版本)

spawn('npm', { stdio: 'inherit', shell: true});

另外,雖然在 Linux, macOS 等系統上不需要設置 shell 選項,命令也能夠正常執行;設置 shell true 也不會妨礙命令的執行,只是會額外的產生一個本不必要的 shell 進程,影響性能。

因此,如果想要編寫跨平臺的 spawn 命令,而又不想增加額外的開銷的話,可以這樣寫

const process = require('process');const { spawn } = require('child_process');spawn('npm', { stdio: 'inherit', // 僅在當前運行環境為 Windows 時,才使用 shell shell: process.platform === 'win32'});

第三方模塊 cross-spawn

關于 spawn 函數的跨平臺寫法,除了自己編寫代碼的時候做處理,也有第三方模塊封裝好了相關細節,如 cross-spawn

使用該模塊,可以在調用 spawn 函數時,自動根據當前的運行平臺,來決定是否生成一個 shell 來執行所給的命令。

而且,還能夠

  • 支持低于 v6 的 Node.js 版本 (使用 shell 選項需要至少 Node.js v6);
  • 跨平臺地支持 shebang;
  • 對命令和參數中的字符進行轉義更為方便。

安裝

npm install cross-spawn

用法

const spawn = require('cross-spawn');spawn('npm', { stdio: 'inherit'});

參考文檔

在 Windows 上衍生 .bat 和 .cmd 文件

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品免费久久久| 国产亚洲精品综合一区91| 91久久精品国产| 亚洲国产精品久久精品怡红院| 国产欧美精品日韩| 亚洲一区第一页| 国产在线精品自拍| 日韩欧美综合在线视频| 亚洲成人精品视频| 欧美野外wwwxxx| 国产日韩欧美日韩大片| 成人在线精品视频| 另类天堂视频在线观看| 亚洲黄色在线观看| 在线观看久久久久久| 日本国产一区二区三区| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品久久久久久久7电影| 欧美成人免费全部观看天天性色| 亚洲国产成人精品一区二区| 亚洲精品一区久久久久久| 成人在线精品视频| 国产欧美精品一区二区三区-老狼| 色多多国产成人永久免费网站| 国产精品欧美在线| 亚洲人成在线观看网站高清| 在线观看欧美视频| 国产98色在线| 亚洲国产成人精品久久| 亚洲va久久久噜噜噜久久天堂| 欧美精品精品精品精品免费| 91九色国产在线| 另类专区欧美制服同性| 一区二区三区天堂av| 日本精品免费一区二区三区| 91精品啪aⅴ在线观看国产| 国产成人精品在线观看| 97超级碰在线看视频免费在线看| 久久久电影免费观看完整版| 欧美成aaa人片在线观看蜜臀| 亚洲第一中文字幕在线观看| 日韩精品电影网| 国产精品久久久久久久久久东京| 欧亚精品中文字幕| 亚洲a区在线视频| 中文字幕亚洲欧美在线| 久久精品人人做人人爽| 欧美国产日产韩国视频| 久久久亚洲精品视频| 国产成人精品免高潮在线观看| 91高潮在线观看| 91精品久久久久久久久青青| 亚洲一区二区在线播放| 这里精品视频免费| 亚洲黄一区二区| 97在线视频免费| 96pao国产成视频永久免费| 亚洲人a成www在线影院| 亚洲一区制服诱惑| 91精品国产乱码久久久久久久久| 亚洲美女av在线播放| 蜜臀久久99精品久久久久久宅男| 亚洲在线第一页| 久久黄色av网站| www.亚洲天堂| 亲子乱一区二区三区电影| 欧美肥臀大乳一区二区免费视频| 国产精品影片在线观看| 国产亚洲视频中文字幕视频| 国产精品国产自产拍高清av水多| 日韩精品免费在线播放| 亚洲综合色激情五月| 国产精品久久精品| wwwwwwww亚洲| 成人av电影天堂| www.日韩免费| 欧美精品一本久久男人的天堂| 国产成人精品免高潮在线观看| 欧美最猛黑人xxxx黑人猛叫黄| 日本精品久久久久久久| 久久久亚洲国产| 一区二区三区日韩在线| 日韩欧美在线视频免费观看| 欧美激情一区二区三级高清视频| 国产精品亚发布| 91av福利视频| 国产这里只有精品| 国产精品久久9| 欧美精品少妇videofree| 久久香蕉精品香蕉| 亚洲视频欧洲视频| 久久99精品久久久久久噜噜| 97在线视频国产| 亚洲欧美国产va在线影院| 亚洲黄色www网站| 中文字幕亚洲欧美在线| 欧美有码在线观看| 日韩成人中文电影| 日韩在线观看免费网站| 国产日韩欧美在线视频观看| 日本国产一区二区三区| 美日韩精品视频免费看| 成人免费观看网址| 狠狠躁夜夜躁人人爽天天天天97| 国语自产偷拍精品视频偷| 国产精品午夜视频| 久久综合色影院| 久久精品国产综合| 亚洲高清不卡av| 亚洲一区二区三区久久| 久久久久久成人精品| 国产在线视频2019最新视频| 最近2019中文字幕大全第二页| 欧美视频中文字幕在线| 亚洲精品视频二区| 欧美性猛交xxxx乱大交| 热门国产精品亚洲第一区在线| 3344国产精品免费看| www.日本久久久久com.| 国产成人在线精品| 久久久最新网址| 欧美专区在线视频| 亚洲夜晚福利在线观看| 欧美亚洲另类制服自拍| 日韩成人中文电影| 91亚洲精品一区二区| 亚洲香蕉成人av网站在线观看| 自拍偷拍免费精品| 热门国产精品亚洲第一区在线| 亚洲毛片在线免费观看| 亚洲丁香婷深爱综合| 大荫蒂欧美视频另类xxxx| 国内精品模特av私拍在线观看| 久久色免费在线视频| 久久中文字幕在线视频| 久久综合色影院| 久久夜色精品国产| 欧美福利视频在线| 国产美女搞久久| 91天堂在线视频| 亚洲激情中文字幕| 欧美视频一区二区三区…| 亚洲理论在线a中文字幕| 国产精品一区二区三| 亚洲综合中文字幕68页| 国产精品mp4| 97热在线精品视频在线观看| 2018国产精品视频| 亚洲人成在线播放| 国产精品老牛影院在线观看| 欧美一级淫片aaaaaaa视频| 91免费视频网站| 97在线日本国产| 日本一区二区三区在线播放| 最新的欧美黄色| 国产精品普通话| 亚洲欧美激情在线视频| 国产精品∨欧美精品v日韩精品| 国产精品白嫩初高中害羞小美女| 国产精品吊钟奶在线| 久久久久成人网| 久久99青青精品免费观看| 国产精品久久久久久久av电影| 欧美激情视频在线免费观看 欧美视频免费一|