2011-09-13 12 views
28

Używam readDirSync, aby pobrać pliki z katalogu. Znajdź kod i błąd w następujący sposób.Pobieranie plików z węzła katalogów 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]); 
} 

Otrzymuję błąd dla wiersza numer 2. ENOENT, Brak takiego pliku lub katalogu "./application/models/" na Object.readdirSync (fs.js: 376: 18)

Mam aplikacje/modele na tym samym reż. Sprawdziłem już "/ application/models /" i "application/models /", ale nie udało się. Widzę to samo, co działa na serwerze.

Proszę o pomoc

Dzięki

+0

Czy próbowałeś 'process.chdir (__ dirname)' – Raynos

Odpowiedz

31

Jeśli używasz ścieżki względnej Dzwoniąc readdirSync, upewnij się, że jest w stosunku do process.cwd(). Jednak "wymagany" powinien być względny do bieżącego skryptu.

Na przykład, biorąc pod uwagę następującą strukturę

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

może trzeba napisać importer.js jak:

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

próbowałeś następujące?

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

tak Próbowałem tego samego. dała mi również błąd .. Brak takiego pliku lub katalogu "/ home/vikas/project-admin/includes/application/models/' – Sharmaji

+0

Czy to możliwe, ponieważ uprawnienia? –

Powiązane problemy