나는 이것이 아마도 어리석은 질문에 가깝다는 것을 알고있다. 그러나 나는 머리를 치고 있는데, 나는 혼자서 또는 문제를 해결할 수 없다. 좋은 옛날 구글의 도움.node.js fs.readdir는 디렉토리에 어떤 파일도 보여주지 않는다.
나는 한 경로에서 스크립트의 함수가 실행되어 데이터 디렉토리에서 사용 가능한 모든 json 파일을 나열하는 express 4 응용 프로그램이 있습니다.
내 디렉토리 구조는 이것이다 :
var taglist = require('../modules/tags_list.js');
그래서 응용 프로그램 : tags_list.js을 필요로
var tagRoutes = require("./routes/routes_tags.js")(app);
routes_tags.js :
/ - 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이 필요합니다. js에는 routes_tags.js가 필요하며 app.get (/ tags) 경로에는 tags_list.js가 필요합니다. 당신이 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;
의 내 코드를 볼 수 있습니다 아래
app.get("/tags", function(req, res) {
, 출력은 사실이기는하지만 어떠한 출력 내가 디렉토리에 5 JSON-파일이 있는지,이 없다는 것을,이다 rfidTagDir.
app.set('rfidTagDir', 'data/rfidTagData');
누군가는 전문 관점, 내가 여기에 한 아마 바보 같은 오류를 내 날 지점 수 : 그런데
rfidTagDir는 app.js 세계적으로 설정되어 있습니까? 나는 그것이 왜 효과가 없어야하는지 알 수 없다.
감사합니다, 나는 나의 오히려 우아 코딩 스타일을 실례 Node.js를 오히려 새로 온 사람에 의해
기독교이시는 : 당신은 아마 이미 이것을 알고있다.
'var taglist = require ('../ modules/tags_list.js ');를 사용하여'taglist'를 가져 와서'taglist (app)'를 호출합니까? – skirtle