gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:14:28 24 4
gpt4 key购买 nike

我知道这可能是一个近乎愚蠢的问题,但我很头疼,我自己无法解决这个问题,也无法在老谷歌的帮助下解决这个问题。

我有一个express 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,而routes_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;

现在,输出是没有输出,尽管事实上我在 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 响应内容未正确创建。但我想无论如何我都会想解决这个问题,因为使用这种手工制作的 json 结构进行编码相当糟糕。

尽管如此,我会确保下次在发布之前尝试更彻底地解决我的问题。

关于javascript - node.js fs.readdir 不显示目录中的任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46827643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com