Javascript 使用Node.js在dir中搜索文件
我目前正在尝试使用Javascript 使用Node.js在dir中搜索文件,javascript,node.js,gruntjs,Javascript,Node.js,Gruntjs,我目前正在尝试使用节点和grunt在Windows上的特定文件夹中搜索一些文件 我有一个grunt任务,它有一个读取带有JSON文件的dir的函数,但问题是,当我运行任务时,读取文件的代码没有做任何事情,该grunt任务上的所有其他内容都运行得很好,但这就是问题所在。我不确定路径的引用是否正确,但我也在使用path.normalize(),它不会引发任何错误 以下是代码片段: ..// Some other code var fs = require('fs'), path = require(
节点
和grunt
在Windows上的特定文件夹中搜索一些文件
我有一个grunt任务
,它有一个读取带有JSON
文件的dir的函数,但问题是,当我运行任务时,读取文件的代码没有做任何事情,该grunt任务
上的所有其他内容都运行得很好,但这就是问题所在。我不确定路径的引用是否正确,但我也在使用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
}
有人知道为什么在我运行任务时会跳过这段代码吗?我可能错过了一些基本的东西。谢谢 您需要更改路径
var filePath = path.normalize("C:\\Users\\jbernhardt\\Desktop\\testkeeper\\jenkinsReports");
另外,要在任何操作系统上使用Windows文件路径时获得一致的结果,请使用path.win32:
path.win32.basename('C:\\Users\\jbernhardt\\Desktop\\testkeeper\\jenkinsReports"');
您可以阅读有关的信息,然后尝试
readdirSync
并检查您的函数是否仍然不工作。我猜您的进程在回调之前就完成了。正在转义路径中的斜杠
"C:\\Users\\jbernhardt\\Desktop\\testkeeper\\jenkinsReports"
应该可以解决您的问题。您只需使用
\uu 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
}
您可以找到更多信息。您的前斜杠正在转义您的路径名Use“C:\\Users\\…”或“C:/Users/”似乎您是正确的,我尝试过了,并且它起作用了!,为了获得最佳实践,我将考虑阅读Async的替代方法。