20

いくつかのプロジェクトがあり、node main.js/make testなどを使用して実行します。必要なのは、スクリプトからこのディレクトリを取得することです。からだけでなくmain.js、任意のサブモジュールからも。pathプラグインとを試してみまし__directoryたが、現在のファイルのパス(サブモジュールなど)を取得します。私も試しrequire('path').dirname(require.main.filename)ましたが、実行するmake testと、プロジェクトディレクトリの代わりにmochadirnameが表示されます。これを解決する最も簡単な方法は何ですか?

4

5 に答える 5

57

process.cwd()それを提供します。

于 2013-03-01T02:10:58.797 に答える
6

__dirnameファイルが存在するパスを提供します。

于 2013-03-01T02:11:08.090 に答える
0

require.cacheロードされたすべてのモジュールとそれに関連するインポートされた値、親モジュール、子モジュール、絶対ファイルパスなどを格納します。

各モジュールは、そのファイルパスをキャッシュキーとして使用してキャッシュオブジェクトに割り当てられていると思いますが、念のために、それを再確認することをお勧めします。

その場合でも、Object.keys(require.cache)すべてのモジュールのファイルパスの配列を提供するのと同じくらい簡単なものです。次に、必要に応じて各パスを解析し、各モジュールパスから探しているディレクトリ情報を取得します。

于 2017-04-27T21:23:35.587 に答える
0

これは、コンソールから相対パスで提供されるファイルにアクセスするための便利な関数です。

function getPath(filename) {
    return (filename[0] != '/' ? process.cwd() + '/' : "") + filename
}
于 2020-02-03T18:52:14.997 に答える
0

JSモジュールではなく実行可能ファイルへのパスが必要な場合は、1つのオプションもあります。使用できます:

process.argv[1] // 0 is path to node

__dirname使用することも__filenameできますが、これらはモジュールへのパスであるため、これをファイルに入れるrequireと、そのファイルへのパスが表示されます。

于 2020-12-11T21:15:28.957 に答える