
返回回調(diào)或使用 if … else
Node 是并發(fā)的。所以,如果不加注意,它可能會變成一個錯誤。 為了安全起見,我們使用 return 語句終止執(zhí)行:
let error = trueif (error) return callback(error)console.log('I will never run - good.')
確保返回一個回調(diào),以防止繼續(xù)執(zhí)行。

監(jiān)聽錯誤事件
幾乎所有的 Node 類/對象都擴展了事件發(fā)射器(觀察者模式)并拋出錯誤事件。在錯位被破壞之前,這給開發(fā)人員提供了捕獲錯誤并處理的機會。
使用 .on() 為錯誤創(chuàng)建事件偵聽器是個好習慣:
var req = http.request(options, (res) => { if (('' + res.statusCode).match(/^2\d\d$/)) { // Success, process response } else if (('' + res.statusCode).match(/^5\d\d$/)) // Server error, not the same as req error. Req was ok. }})req.on('error', (error) => { // Can't even make a request: general error, e.g. ECONNRESET, ECONNREFUSED, HPE_INVALID_VERSION console.log(error)})

了解 npm
很多 Node 開發(fā)者甚至前端開發(fā)者都知道 --save(npm install 的參數(shù))可以安裝一個模塊并在 package.json 中記錄模塊的版本。另外,還有 --save-dev,用于在 devDependencies 添加記錄(記錄那些不需要在發(fā)布時的模塊)。不過你知道可以用 -S 和 -D 代替 --save 和 --save-dev 嗎?你可以嘗試這樣做。
在 package.json 中使用準確的版本號
在安裝模塊的時候,去刪除 -S 和 -D 為你添加的那些 ^ 記號。它們非常危險,因為它們允許 npm install(或簡寫為 npm i)從 npm 庫中拉取最新的小版本(語義化的版本號中的第2個數(shù))。比如從 v6.1.0 到 v6.2.0 就是一個小版本發(fā)布。
npm 團隊信任 semver,但你不能。他們加上 ^ 符號是因為他們相信開源作者不會在小版本中引入破壞性的修改。然而明眼人都知道它是不可靠的。你應該鎖定版本號,最好使用 shrinkwrap:npm shrinkwrap 創(chuàng)建一個包含依賴的具體版本的新文件。
