あなたが探している解決策があるかどうかわかりません。私が見てきたように、モジュールについていくつかのファイル記述子を取得しようとしています。
おそらく、現在のファイルディスクリプタをどのモジュールからも取得する必要があります。私はrequire('module')
に関するいくつかの情報を見ました。それはそれに役立つことがあります。
_resolveLookupPaths
および_resolveFilename
linkは有用な方法である。残念ながら、2番目の方法はグローバルな依存関係のためだけに機能します。したがって、ローカルの依存関係は考慮されません。
私はこのコードはモジュールのフルパスを取得するためにあなたを助けることができます信じて:あなたは、このメソッドを実行するとき
// my own file descriptor
var packageJson = require('./package.json');
console.log(packageJson);
// module file descriptor
var moduleName = 'mongoose'; // change module name
var modulePath = require('module')._resolveLookupPaths('./');
var moduleDescriptor = require(modulePath[1][1] + '/' + moduleName + '/package.json');
console.log(moduleDescriptor.version);
:
var modulePath = require('module')._resolveLookupPaths('./');
を出力は常に同じです:
[ './',
[ '.',
'/home/<username>/<folder>/<sub-folder>/node_modules',
'/home/<username>/<folder>/node_modules',
'/home/<username>/node_modules',
... ] ]
私の完全なパスは
modulePath[1][1]
です任意のローカルモジュールの実際のパスを作成できます。しかし、これは、モジュールのファイル記述子情報を取得するための最良の方法であるのか正式な方法なのかは分かりません。
編集:
は多分これはあなたを助けることができる:
// index.js
require('mymodule').init();
ノードモジュールで:
// node_modules/mymodule/index.js
module.exports.init = function() {
var pack = require(process.cwd() + '\\package.json'); // I'm running on windows!!
console.log(pack.version); // output 1.0.0
}
出力は(私のモジュールを呼び出しているアプリに応じて)されます:
// 1.0.0
これについていくつかの議論がありました。私はあなたがファイル記述子(package.json)をモジュールから得る方法を探していると思います、そうですか? –
@CelsoAgraはそれほどではありません(これが別のプロジェクトにとって便利な場合でも)。私が必要とするのは、アプリケーションを元々実行しているモジュールを見つける方法です。私はより明確に私の質問を編集しました。 – Coyote