8

node-webkitで、現在のアプリケーションへのパスを見つける方法はありますか?node.jsでは__dirname、現在のアプリケーションへのパスを見つけるために使用できますが、node-webkitでは、変数__dirnameが未定義のように見えます。

次のnode.jsスクリプトは、ファイルパスを正しく出力します。

console.log(__dirname)

次のnode-webkitスクリプトは、ファイルパスを正しく出力しません。

<script type = "text/javascript">
    alert(__dirname);
</script>

node-webkitで現在のアプリケーションへのパスを見つける正しい方法は何ですか?

4

6 に答える 6

7

受け入れられた回答のリンクは利用できなくなったため、短い回答を次に示します。

nw.js は、アプリを実行するたびに、アプリのコンテンツを一時ディレクトリに抽出します。

nw.js がアプリを抽出したパスにアクセスする場合は、次を使用します。process.cwd()

他の原因で、実行可能アプリのパスにアクセスする必要がある場合は、次を使用します。

var path = require('path');
var nwDir = path.dirname(process.execPath);
于 2015-03-20T15:25:09.630 に答える
5

この質問に対する回答は、https: //groups.google.com/d/topic/node-webkit/IwGzluFC9iU/discussionで議論されました。

Windows では、「process.execPath」を使用して、それを起動した実行可能ファイルのパスを確認します。次に、そこから作業し、パスから実行可能ファイルのファイル名を削除して、フォルダーのパスを取得します (アプリの .nw が実行可能ファイルに関連しているか、それと組み合わされていると仮定します)。

これは、圧縮された「app.nw」で実行されている場合でも、「nw.exe」と「app.nw」が1つの実行可能ファイル(app.exe)に結合されている場合でも機能します。

于 2012-12-10T01:58:09.917 に答える
2

アプリのソース (つまり、 を含むフォルダー) へのパスを探している場合は、package.jsonを使用できますprocess.cwd()

ノード実行可能ファイルが起動されたときの環境の実際の作業ディレクトリが何であれprocess.cwd()、アプリ ソースの場所に設定されます。アプリがアーカイブに含まれている場合、cwdはソースが抽出される一時フォルダーを指します。

重要なprocess.cwd()ことに、 はアプリケーションの実行中に変更されるprocess.chdir(newPath)可能性があり、他のイベントによっても変更される可能性があるため、アプリケーションの起動時に初期値を保存することをお勧めします。

編集: 明確にするために、実行中のアプリで使用される実際のファイルをprocess.cwd()含むフォルダーに設定されます。package.jsonそのため、アプリをアーカイブまたは実行可能ファイル (zip、exe、nwz、nw など) にパッケージ化した場合、nw.exeはアプリを実行する前にプロジェクト ファイルを一時ディレクトリに抽出します。したがって、元のアーカイブまたは実行可能ファイルの場所ではなくprocess.cwd()、その一時フォルダーを指します。

于 2015-02-27T20:19:25.973 に答える