2014-11-04 134 views
0

JavaScript代碼告訴瀏覽器或NodeJS是運行在瀏覽器中的最佳方式是什麼?如何判斷在瀏覽器中還是在NodeJS中運行?

我正在尋找將評估爲布爾值的東西。

試圖訪問window並捕獲異常似乎相當混亂。有沒有更好的辦法?

+0

也不例外參與; 'nodal =(typeof window ==='undefined');' – 2014-11-04 15:32:08

+0

爲什麼不檢查process.version,它在節點中給出以下輸出:{http_parser:'1.0', node:'0.10.4', v8:'3.14.5.8', ares:'1.9.0-DEV', uv:'0.10.3', zlib:'1.2.3', modules:'11', openssl:'1.0。 1e'} – matteo 2014-11-04 15:34:24

+0

下面是我們用於Node/AMD/Browser檢測的塊([link](https://github.com/geraintluff/tv4/blob/master/tv4.js#L10-L19)) - 而不是布爾值(有兩種以上的設置),它調用不同配置的初始化函數。 – cloudfeet 2014-11-04 15:34:35

回答

2

您可以使用UMD method的削減版本:

var isNode = (typeof exports === 'object') ? true: false; 
+4

爲什麼要返回一個布爾值來評估一個布爾值呢? 'var isNode = typeof exports!=='object';' – 2014-11-04 15:38:41

+1

我認爲我的版本更清晰。 – Andy 2014-11-04 15:39:35

+1

如何確保將來「出口」變量不會代表對象瀏覽器端? – matteo 2014-11-04 15:52:24

0
var isNode = (typeof processs != 'undefined' && typeof process.versions != 'undefined' && typeof process.versions.node != 'undefined'); 
+0

@BenFortune你是對的:更正。 – matteo 2014-11-04 15:53:24

相關問題