20

Node.js ベースのビルド セットアップ (grunt、require ..) からアクセスできるように、javascript ファイルに以下のモジュール エクスポートがあります。

    ....
if(module && module.exports) {
        module.exports = m;
    }

ブラウザで同じファイルを使用すると、エラーが発生します

Uncaught ReferenceError: module is not defined const.js:49
(anonymous function)

ノードをバックエンドとして使用しません。このエラーを回避するにはどうすればよいですか? つまり、ビルド中 (ノードベース) にエクスポートする必要がありmますrequireが、ブラウザーではスタンドアロンで動作します。

ブラウザが変数モジュールを未定義として扱わず、エラーをスローしないのはなぜですか?

ありがとう。

4

1 に答える 1

41

typeof module !== "undefined"代わりにテストmodule

ブラウザが変数モジュールを未定義として扱わず、エラーをスローしないのはなぜですか?

undefined であるだけでなく、 undeclared であるためです。これは、変数名をタイプミスしたときにエラーをスローするための優れた機能です。たとえば、次の場合は false として扱われるのではなく、エラーになる方が適切です。

var loose = true;
if (lose) {
}
于 2013-07-31T10:27:47.980 に答える