126

私は自分のコンピューターで Express フレームワークを使用して node.js プログラムを開発しましたが、問題なく動作します。

しかし、SUSE Studio アプライアンス上でプログラムを実行すると、プログラムが存在することが意図されており、ファイルのやり取りでエラーが発生します。

Error: ENOENT, stat './path/to/file'

ファイルのアクセス許可が正しいことを確認しました。これが問題になる場合、私のコンピューターとアプライアンスは異なるバージョンのノードを実行しています。

何かご意見は?

4

2 に答える 2

188

で指定されたパスは.、スクリプト ファイルに対してではなく、現在の作業ディレクトリに対して相対的です。そのため、実行するとファイルが見つかる可能性がありますが、実行すると見つからない可能性がありnode app.jsますnode folder/app.js。これに対する唯一の例外は、モジュールごとに存在し、どのモジュールから呼び出されているかを知っているrequire('./file')ためにのみ可能です。require

__dirnameスクリプトからの相対パスを作成するには、変数を使用する必要があります。

var path = require('path');

path.join(__dirname, 'path/to/file')

または潜在的に

path.join(__dirname, 'path', 'to', 'file')
于 2012-11-24T17:32:56.960 に答える
5

app.js を使用するコードは次のとおりです。

入力はファイル名を指定します

res.download(__dirname+'/'+input);
于 2013-08-24T04:57:55.863 に答える