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如此,下次我还是会确定的,在发布之前,我会尽量解决我的问题。