2016-09-20 3 views
1

В настоящее время я пытаюсь найти несколько файлов в определенной папке в Windows, используя node и grunt.Поиск файлов в каталоге с помощью Node.js

У меня есть grunt task, который имеет функцию для чтения каталога с JSON файлами, но проблема в том, что при запуске задачи, код для чтения файла ничего не делает, все остальное на что grunt task пробегов совершенных , но затем. Я не уверен, что ссылка на путь верна, но я также использую path.normalize() и не вызывает никаких ошибок.

Это фрагмент кода:

..// Some other code 
var fs = require('fs'), 
path = require("path"); 

grunt.registerTask('separate', function() { 
var filePath = path.normalize("C:\Users\jbernhardt\Desktop\testkeeper\jenkinsReports"); 

fs.readdir(filePath, function(err, filenames) { 

    //This log doesn't show as it the function is not running 
    grunt.log.writeln("Testing"); 

    if (err) { 
     grunt.log.writeln("Error"); 
     return; 
    } 
    filenames.forEach(function(filename){ 
     grunt.log.writeln("Testing"); 

    }); 

    }); 
...//Some more code below for the same task 
} 

ли кто-нибудь имеет представление о том, почему этот фрагмент кода пропуску при запуске задачи? Возможно, я мог бы пропустить некоторые основные вещи. Благодаря!

+0

Ваши косые черты ускользают от вашего имени пути –

+0

Используйте «C: \\ Users \\ ...» или «C:/Users /» – Draykos

ответ

2

Попробуйте readdirSync и проверьте, не работает ли ваша функция. Я предполагаю, что ваш процесс завершен до обратного вызова.

+0

Кажется, что вы правы, я пробовал это и его работу !, I ' Посмотрите альтернативу для чтения Async для лучшей практики. –

0

вам необходимо изменить свой путь

var filePath = path.normalize("C:\\Users\\jbernhardt\\Desktop\\testkeeper\\jenkinsReports"); 

Кроме того, чтобы добиться согласованных результатов при работе с путями к файлам Windows, на любой операционной системе, используйте path.win32:

path.win32.basename('C:\\Users\\jbernhardt\\Desktop\\testkeeper\\jenkinsReports"'); 

Вы можете прочитать о https://nodejs.org/api/path.html#path_windows_vs_posix

0

Слэш в пути сбежал.

"C:\\Users\\jbernhardt\\Desktop\\testkeeper\\jenkinsReports" 

должен решить вашу проблему.

1

Вы можете просто использовать __dirname объект, чтобы получить путь, где текущий скрипт работает:

..// Some other code 
var fs = require('fs'), 
path = require("path"); 

grunt.registerTask('separate', function() { 

fs.readdir(__dirname, function(err, filenames) { 

    //This log doesn't show as it the function is not running 
    grunt.log.writeln("Testing"); 

    if (err) { 
     grunt.log.writeln("Error"); 
     return; 
    } 
    filenames.forEach(function(filename){ 
     grunt.log.writeln("Testing"); 

    }); 

    }); 
...//Some more code below for the same task 
} 

Вы можете найти более подробную информацию here.

Смежные вопросы