node.js fs.readdir不显示目录中的任何文件

我知道这可能是一个愚蠢的问题附近,但我砰的一声,我根本无法解决问题,我自己或在老谷歌的帮助下。

我有一个快速的4应用程序,其中在一个路由从脚本执行函数列出所有可用的json文件从数据目录。

我的目录结构是这样的:

/ - app root directory with app.js /routes - routes_tags.js is stored here /modules - tags_list.js is stored here /data/rfidTagData - directory that holds json files 

app.js需要routes_tags.js:

  var tagRoutes = require("./routes/routes_tags.js")(app); 

routes_tags.js需要tags_list.js:

  var taglist = require('../modules/tags_list.js'); 

所以app.js需要routes_tags.js,而route_tags.js又需要路由app.get(/ tags)中的tags_list.js。

  app.get("/tags", function(req, res) { 

下面你会看到我的代码tags_list.js

 var path = require('path'); var fs = require('fs'); //var taglist = function(tagDirectory, serverAddr, debug){ var taglist = function(app){ // get global app variables var DEBUG = app.get('DEBUG'); var svrAddr = app.get('svrAddr'); var rfidTagDir = path.join('/', app.get('rfidTagDir')); var responseContent = ''; if (DEBUG) { console.log('list of tags requested - provided data: '); console.log('directory: ' + rfidTagDir); } try { fs.readdir(rfidTagDir, function(err, items) { console.log(items); if (!items.length) { // directory appears to be empty console.error("nothing to read in directory "+rfidTagDir); responseContent = '{\'response\': \'warning\', \'message\': \'nothing to read from directory '+rfidTagDir+'\'}'; } else { if (app.DEBUG) console.log(items); responseContent = "{\'response\': \'info\', \'description\': \'list of all stored rfid tags\', \'tags\': [" for (i in items) { var tag = items[i].toString().substring(0,items[i].indexOf('.')); responseContent += "{\'tag\': \'" + tag + "\', \'endpoint\': \'"+svrAddr+"/tags/tag/" + tag + "\', \'file\': \'"+items[i]+"\'}" // we only need to add the , after an array element in the json // structure, if there are sukzessive elements. if (i<items.length-1) responseContent += ","; } responseContent += "]}" } }); } catch (err) { console.error("could not read directory "+rfidTagDir+" to list available tags \nException output: " + err.toString()); responseContent = '{\'response\': \'error\', \'message\': \'could not read directory '+rfidTagDir+'\', \'exception\': \' '+err.toString()+'\'}' ; } if (DEBUG) {console.log(responseContent)} return responseContent; } module.exports = taglist; 

现在输出结果是没有输出,尽pipe我在目录rfidTagDir中有5个json文件。

rfidTagDir在app.js中全局设置为:

  app.set('rfidTagDir', 'data/rfidTagData'); 

有人可能会从我的专业angular度指出我可能是在这里犯的愚蠢的错误吗? 我根本看不出为什么它不应该工作。

最好的祝福,

基督教

Ps:你可能已经知道了,因为我对node.js比较陌生,所以请原谅我相当不雅的编码风格。

我的天啊!

我很抱歉,当我发布这个问题的时候,我想我只是试试最后一件事 – 那就是诀窍。

我改变了app.js中rfidTagDir的定义

  app.set('rfidTagDir', 'data/rfidTagData'); 

  app.set('rfidTagDir', './data/rfidTagData'); 

现在唯一剩下的就是json响应内容没有正确创build。 但是,我想我会想在这方面工作,因为这只是用这个手工制作的json结构的相当糟糕的代码。

尽pipe如此,下次我还是会确定的,在发布之前,我会尽量解决我的问题。