6

「server.js」という Node.js ファイルがあります。

スクリプトでは、次のようなものを使用していくつかのファイルを開いています。

var certPem = fs.readFileSync('cert_and_key_dev.pem', encoding='ascii');

bash シェルを使用して、server.js があるディレクトリに移動し、次のコマンドを実行します。

[mybashshell]$ ノード server.js

動作します。エラーはありません。サーバーが起動して実行されます。

ここで、server.js ファイルがあるディレクトリから cd を実行し、同じシェル コマンドを再度実行してサーバーを起動します。

「cert_and_key_dev.pem」へのファイルパスが壊れていると不平を言っています。

私はこのようなことが起こるとは思っていませんでした。実行中のスクリプト ファイルで使用されるパスは、bash シェル コマンドを実行した場所ではなく、スクリプト ファイルからの相対パスである必要があります。

何か案は?

4

2 に答える 2

16

これをスクリプトの先頭に置きます。

process.chdir(__dirname);

これにより、プロセスの作業ディレクトリが、実行中のファイル ( ) のディレクトリ パスに変更__dirnameされます。

関数の詳細については、こちらをお読みください。

于 2012-11-18T04:58:35.287 に答える
7

または

var path = require('path');
var key = path.join(__dirname, 'cert_and_key_dev.pem');
var certPem = fs.readFileSync(key, encoding='ascii');

cd何らかの理由でしたくない場合。

于 2012-11-18T05:03:17.073 に答える