2013-01-18 21 views
1

我有一段JavaScript被設計爲在NodeJS中運行,否則它會中斷(例如,它使用require())。我想做一個運行時檢查它是否在NodeJS中,否則會產生一個明確的錯誤消息。如何檢查我的代碼在NodeJs中運行?

我見過this answer解釋如何檢查代碼是否在瀏覽器中運行。但是它不檢查是否有NodeJS。

如何檢查我的JavaScript是否在NodeJS中運行?

+0

你設計你的代碼在一個以上的環境中運行?如果沒有,那麼肯定不需要檢查環境是否是正確的......用戶有責任檢查它適用於哪個環境。 –

+0

@Nathan MacInnes:嗯,在現實生活中,用戶在任何他們想要的地方運行代碼,然後給我們發電子郵件並詢問爲什麼他們有很多奇怪的錯誤。 – sharptooth

+0

這恰好是http://stackoverflow.com/q/4224606/57428的副本 – sharptooth

回答

2

一兩件事你可以向是檢查對象process是否定義以及是否process.argv陣列的第一個元素是節點。

喜歡的東西:

if(typeof process !== 'undefined' && process.argv[0] === "node") { 
    // this is node 
} 

更多信息in the docs

3

防彈解決方案將檢查全局window對象。在瀏覽器中,它存在,並且不能被刪除。在node.js中,它不存在,或者如果它確實存在(因爲有人定義了它),它可以被刪除。 (node.js的中,全局對象被稱爲GLOBAL,它可以被刪除)

一個功能,它會是這樣的:

function is_it_nodejs() { 
    if (typeof window === 'undefined') return true; 

    var backup = window, 
     window_can_be_deleted = delete window; 
    window = backup; // Restoring from backup 

    return window_can_be_deleted; 
} 
相關問題