2011-09-13 78 views
28

我正在使用readDirSync從Diretory獲取文件。 PLease找到如下代碼和錯誤。從目錄節點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,沒有這樣的文件或目錄'./application/models/'在Object.readdirSync(fs.js:376:18)

我有應用程序/模型在同一個目錄。我已經檢查過'/ application/models /'和 'application/models /',但失敗了。我可以看到服務器上運行的是同樣的東西。

請幫

感謝

+0

你試過'process.chdir(__目錄名)' – Raynos

回答

31

如果您呼叫readdirSync在使用相對路徑,確保它是相對於process.cwd()。 但是,「要求」應該是相對於當前腳本。

例如,給出以下結構

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

是否因爲權限? –