ブラウザーと nodejs サーバーの間で共有される js コードを実行しようとしています。そのために、私は次のプラクティスを使用します: http://caolanmcmahon.com/posts/writing_for_node_and_the_browser/
問題は、オブジェクトではなく関数をエクスポートする場合です。ノードでは、次のようなことができます:
var Constructor = function(){/*code*/};
module.exports = Constructor;
require を使用すると、次のことができるようになります。
var Constructor = require('module.js');
var oInstance = new Constructor();
問題は、モジュール内の module.exports オブジェクトを参照し、その参照を使用して関数で上書きしようとしたときです。モジュールでは、次のようになります。
var Constructor = function(){/*code*/};
var reference = module.exports;
reference = Constructor;
なぜこれが機能しないのですか?簡単な解決策を使用して、きれいなコード内に if を挿入したくありませんが、 reference===module.exports が true であるにもかかわらず、なぜそれが違法なのかを理解したいのです。
ありがとう