node里讀取命令行參數


一、process.env

process.env屬性返回一個包含用戶環境信息的對象。

最常見的需求,前端需要根據不同的環境(dev,prd),來調用不同的后端接口。如果用webpack,是這么做的:
1)package.json里的命令:

"scripts": {
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
},

  

2)webpack.config.js獲取

console.log(process.env.NODE_ENV) //執行npm run dev,打印development

 

事實上,以上從命令行獲取環境變量這個件事跟webpack沒有關系,執行node文件也可以這樣獲取。
1)新建文件test.js:

console.log(global.process.env.a);

2)命令行執行test.js:

a=1 node test.js

命令行輸出a的值1。

 

題外話,如果順序改變呢?命令行執行下面的命令

node test.js a=1

 

測試結果:test.js能被執行,但獲取不到a的值。

 

global.process.env.a這個變量在這次node命名結束前都能獲取到,如果是以后執行也能獲取到,就需要用以下的命令(mac linux):

export a=2 && node test.js


這條命令運行后,只要運行node文件,在文件里可以得到 global.process.env.a的值為2.

 

 二 、process.argv

還記得前面說過,下面的命令無法通過 process.env 獲取。

node test.js a=1

這時候就要用到process.argv。他返回當前進程的所有命令行參數,是個數組,前2個元素是node命令路徑和被執行的文件路徑:

所以經常見到 

process.argv.slice(2)

 

process是node的全局變量,不用require直接能訪問。中文文檔標注為:進程對象。它提供當前 Node.js 進程的有關信息,以及控制當前 Node.js 進程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM