我在服务器目录中记录文件我想向客户端显示文件名,所以我创建了正确读取名称的readDirectory.js
现在我对node.js
很新,我正在尝试发送json
数据到客户端但没有发生,如何使用快递将日志文件名发送给客户端?
readDirectory.js
var fs = require('fs');
var path = './Logs'
var Logs = [];
function readDirectory(){
fs.readdir(path, function(err, items) {
Logs.push(items);
/* console.log(items);
for (var i=0; i<items.length; i++) {
console.log(items[i]);
}*/
});
return Logs;
}
exports.readDirectory = readDirectory;
app.js
var express = require('express');
var app = express();
var readDirectory = require('./readDirectory');
app.use(express.static(__dirname + "/public"));
app.get('/logs',function(req,res){
res.send(readDirectory.readDirectory());
});
angularFactory.js
angular.module('App').factory('DitFactory', function ($http) {
'use strict';
var data;
return {
data:"data from factory"
getLogs: function () {
return $http.get('/logs')
.then(function (response) {
return response.data;
});
}
}
});
答案 0 :(得分:2)
您必须将Logs
数组序列化为json并将其发送回客户端
app.get('/logs',function(req,res){
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(readDirectory.readDirectory()));
});
或者
app.get('/logs',function(req,res){
res.json(readDirectory.readDirectory());
});
答案 1 :(得分:1)
您的 readDirectory.js 应如下所示:
var fs = require('fs');
var path = './Logs'
var Logs = [];
function readDirectory(callback){
fs.readdir(path, function(err, items) {
Logs.push(items);
callback(Logs);
});
}
exports.readDirectory = readDirectory;
你的 app.js 应该是这样的:
var express = require('express');
var app = express();
var readDirectory = require('./readDirectory');
app.use(express.static(__dirname + "/public"));
app.get('/logs',function(req,res){
readDirectory.readDirectory(function(logFiles){
res.json({files : logFiles});
});
});
希望这个帮助!
答案 2 :(得分:0)
自Node v11.0.0起,您可以使用require('fs').promises
来获得承诺。
在您的情况下,您要将目录中的文件数组推入“日志”数组。由于在这种情况下,“日志”将始终是只有一个值的数组,因此我没有使用它。
您可以这样做:
var fs = require('fs').promises;
var path = './Logs'
async function readDirectory() {
const files = await fs.readdir(path);
return files;
}
为了返回文件夹中的文件列表,请像下面这样更改您的app.js:
app.get('/logs', function (req, res) {
readDirectory.readDirectory()
.then((files) => {
res.send(files);
});
});
完整答案的链接: https://stackoverflow.com/a/56821924/8021938
来源: https://nodejs.org/api/fs.html#fs_fspromises_readfile_path_options