2011-09-13 46 views
28

私はdiredoryからファイルを取得するためにreadDirSyncを使用しています。次のようにコードとエラーを見つけます。ディレクトリノードからファイルを取得するJs

var fs = require('fs'); 
var files = fs.readdirSync('./application/models/'); 
for(var i in files) { 
    var definition = require('../application/models/'+files[i]).Model; 
    console.log('Model Loaded: ' + files[i]); 
} 

2行目でエラーが発生します。 ENOENT、そのようなファイルやディレクトリはありません。Object.readdirSync(fs.js:376:18)

私は同じディレクトリにアプリケーション/モデルを持っています。私はすでに '/ application/models /'と 'application/models /'をチェックしましたが、失敗しました。私は同じことがサーバー上で実行されているのを見ることができます。

おかげ

+0

あなたは 'process.chdir(__ DIRNAME)を試してみました' – Raynos

答えて

31

readdirSyncを呼び出すときに、相対パスを使用している場合、それはprocess.cwd()に相対的であることを確認してください。 ただし、"require"は現在のスクリプトとの相対値である必要があります。

たとえば、次のような構造

server.js (node process) 
/lib/importer.js (the current script) 
/lib/application/models/ 

与え、あなたのようにimporter.jsを書く必要があります。

var fs = require('fs'); 
var files = fs.readdirSync('./lib/application/models/'); 
for (var i in files) { 
    var definition = require('./application/models/' + files[i]).Model; 
    console.log('Model Loaded: ' + files[i]); 
} 
5

次みましたが助けてください?

var files = fs.readdirSync(__dirname+'/application/models/'); 
+0

はい私は同じことを試みた。それはまた私にエラーを与えた..いいえそのようなファイルやディレクトリ '/ home/vikas/project-admin/includes/application/models /' – Sharmaji

+0

権限がある可能性がありますか? –

関連する問題