JavaScript実行環境の判定方法について


JavaScriptを実行している環境が次の3つのうちどれであるかをJavaScriptから検知して条件分岐をしたいです。

  1. 通常のWebページとして動作している
  2. node-webkitで動作している
  3. Node.js上で動作している

一度に3つ同時に判定しなくても、1か2かの分岐・2か３かの分岐ができれば良いです。




2020/2/11 現在、この記事を参考に isNode を実装してみたがうまくいかなかった。  
前提としてブラウザー側には webpack を使っている。  
webpack を使った環境においては process も require も undefined ではない。  
代わりに process.title の値を判断材料にしてみた。

[code]

    const isNode = (process.title !== 'browser');
    
[/code]

isNode の実装方法を調べてここにたどり着く人が他にもいると思うので参考にメモ残しておきます。

## 前提

  * Windows 10 Home Edition 上の Ubuntu(WSL)
  * Node.js v12.15.0
  * webpack 4.41.5
  * babel 7.8.4

## process.title の値の調査結果

  * Node.js の場合："/usr/local/bin/node"（たぶん、node のパスかな？）
  * ブラウザーの場合："browser" 




2020/2/11 現在、この記事を参考に isNode を実装してみたがうまくいかなかった。  
前提としてブラウザー側には webpack を使っている。  
webpack を使った環境においては process も require も undefined ではない。  
代わりに process.title の値を判断材料にしてみた。

[code]

    const isNode = (process.title !== 'browser');
    
[/code]

isNode の実装方法を調べてここにたどり着く人が他にもいると思うので参考にメモ残しておきます。

## 前提

  * Windows 10 Home Edition 上の Ubuntu(WSL)
  * Node.js v12.15.0
  * webpack 4.41.5
  * babel 7.8.4

## process.title の値の調査結果

  * Node.js の場合："/usr/local/bin/node"（たぶん、node のパスかな？）
  * ブラウザーの場合："browser" 

