2017-02-13 9 views
0

Я пытаюсь перечислить файлы в папке S:/test, которая находится в моей сети (это не локальный каталог). Мне было интересно, как это сделать? Код до сих пор выглядит следующим образом:Доступ к сетевому диску в nodejs?

const testFolder = 's:/test'; 
 
const fs = require('fs'); 
 
fs.readdir(testFolder, (err, files) => { 
 
    files.forEach(file => { 
 
    console.log(file); 
 
    }); 
 
})

Я попытался изменить путь к S: испытания, с: \ тест не дало никаких результатов, то ошибка всегда «Не удается прочитать«Foreach "неопределенный»

+1

, пожалуйста, используйте полный адрес привода (s это просто сокращенный вариант полного пути) ... этот пост может помочь вам http://stackoverflow.com/questions/34837954/use-node- js-to-access-a-local-network-drive – ymz

+0

Вы правы, я думал, что попробовал, но я ошибся. Спасибо. – mathExpl

+0

Также сначала поймайте ошибку: 'if (err) return console.error (err)' или даже лучше использовать Promisified 'fs' – Matt

ответ

1

Если это окно (который я предполагаю, что это), то вам нужно сделать пару вещей:

  1. использовать полный путь (буквы дисков в порядке, но вы также можете использоватьUNC-пути в окнах) в нужный каталог.
  2. Побег любой обратной косой черты в определении строки с дополнительной обратной косой чертой.
  3. Всегда используйте обработку ошибок в обратном вызове fs.readdir(), поэтому, если есть ошибка, вы можете точно увидеть, что такое ошибка.

Рабочий код:

const fs = require('fs'); 
const testFolder = 's:\\test'; 

fs.readdir(testFolder, (err, files) => { 
    if (err) return console.log(err); 
    files.forEach(file => { 
    console.log(file); 
    }); 
}); 

Я просто попробовал этот код на моем собственном жестком диске, и она работает просто отлично.


И FYI я почти всегда использовать ES6 for/of сейчас в современном Node.js, а не .forEach(), потому что это гораздо более эффективным для переводчика, и это дает вам больше контроля цикла (например, вы можете использовать break для выйти из цикла).

const testFolder = 's:\\test'; 
const fs = require('fs'); 

fs.readdir(testFolder, (err, files) => { 
    if (err) return console.log(err); 
    for (let file of files) { 
    console.log(file); 
    } 
}); 
+0

, спасибо за тщательный ответ! это действительно более эффективно использовать для? – mathExpl