モジュールの「単一性」が崩れる場合については、ノードのモジュール キャッシングに関する注意事項を確認してください。
./
シングルトン モジュールを単一のパッケージ内のファイル パス ( 、../
、またはで始まる/
) で常に参照する場合は安全です。
サービスが他のモジュールで使用されるパッケージにラップされている場合、シングルトンのインスタンスが複数になる可能性があります。
この甘いサービス ライブラリを公開するとします。
service-lib/
⌞ package.json
⌞ service.js
service.js:
var singleton = {};
module.exports = singleton;
このアプリでserver.js
は、サービスのさまざまなインスタンスをother.js
取得します。
app/
⌞ server.js
⌞ node_modules/
⌞ service-lib/
⌞ service.js
⌞ other-package/
⌞ other.js
⌞ node_modules/
⌞ service-lib/
⌞ service.js
このアプリはインスタンスを共有しますが:
app/
⌞ server.js
⌞ node_modules/
⌞ service-lib/
⌞ service.js
⌞ other-package/
⌞ other.js
同じことを同じにnpm install
するapp
と、依存関係のバージョンに応じて、どちらかのディレクトリ構造になる可能性があります。ノードのフォルダー docに詳細があります。