我有一段JavaScript被設計爲在NodeJS中運行,否則它會中斷(例如,它使用require()
)。我想做一個運行時檢查它是否在NodeJS中,否則會產生一個明確的錯誤消息。如何檢查我的代碼在NodeJs中運行?
我見過this answer解釋如何檢查代碼是否在瀏覽器中運行。但是它不檢查是否有NodeJS。
如何檢查我的JavaScript是否在NodeJS中運行?
我有一段JavaScript被設計爲在NodeJS中運行,否則它會中斷(例如,它使用require()
)。我想做一個運行時檢查它是否在NodeJS中,否則會產生一個明確的錯誤消息。如何檢查我的代碼在NodeJs中運行?
我見過this answer解釋如何檢查代碼是否在瀏覽器中運行。但是它不檢查是否有NodeJS。
如何檢查我的JavaScript是否在NodeJS中運行?
一兩件事你可以向是檢查對象process
是否定義以及是否process.argv
陣列的第一個元素是節點。
喜歡的東西:
if(typeof process !== 'undefined' && process.argv[0] === "node") {
// this is node
}
更多信息in the docs。
防彈解決方案將檢查全局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;
}
你設計你的代碼在一個以上的環境中運行?如果沒有,那麼肯定不需要檢查環境是否是正確的......用戶有責任檢查它適用於哪個環境。 –
@Nathan MacInnes:嗯,在現實生活中,用戶在任何他們想要的地方運行代碼,然後給我們發電子郵件並詢問爲什麼他們有很多奇怪的錯誤。 – sharptooth
這恰好是http://stackoverflow.com/q/4224606/57428的副本 – sharptooth