2016-04-05 27 views
1

私はnode.js + expressでアプリを構築していますが、ファイルディレクトリエラーが発生しています。ノードモジュール内の相対パスでファイルにアクセスする方法は?

/app/lib/testsフォルダにajax.jsという名前のテストファイルがあります。私のapp.jsファイルは私のルート/appディレクトリにあります。これに伴う問題は、それが私をgivngだある

var server = require('../../app'); 

:私は私のapp.jsファイルを必要とし、私のajax.jsファイルで

https.createServer({ 
    key: fs.readFileSync('./security/keys/localhost.key'), 
    cert: fs.readFileSync('./security/keys/localhost.crt') 
}, app).listen(https_port); 

:ここでは私のトラブルを与えている私のapp.jsファイルの抜粋ですこのエラー:

Error: ENOENT: no such file or directory, open './security/keys/localhost.key'これは、ファイルのディレクトリが正しく整列していないことを示しています。私はしかし、これは全体的に私のアプリを破る

Error: ENOENT: no such file or directory, open '../../security/keys/localhost.key'

Error: ENOENT: no such file or directory, open './security/keys/localhost.key'

を変更した場合、私のajax.jsファイルが動作します。

app.jsのファイルディレクトリをajax.jsに伝える方法はありますか?

ありがとうございます!

+0

このファイルの絶対パスは '何ですか./security/keys/localhost.key '? – Lewis

答えて

3

使用require.resolve()は、必要なモジュールのコンテキストでパスを解決し、ファイルシステムにアクセスするために解決されたパスを使用する:

https.createServer({ 
    key: fs.readFileSync(require.resolve('./security/keys/localhost.key')), 
    cert: fs.readFileSync(require.resolve('./security/keys/localhost.crt')) 
}, app).listen(https_port);