Я настроил узел так, чтобы он обслуживал мою общую папку. Теперь я пытаюсь получить доступ к файлам в структуре общих/данных/событий, но он не может его найти.Почему узел не может найти статический каталог?
Here is my file structure
public/
data/
event/
src/
scripts/eventController.js
webserver.js
Этот файл моих событийController.js. Этот файл пытается получить доступ к файлам в структуре public/data/event/folder, но не может их найти.
'use strict';
let fs = require('fs');
module.exports.get = function(req, res) {
let event = fs.readFileSync('../public/data/event/' +
req.params.id + '.json', 'utf8');
res.setHeader('Content-Type', 'application/json');
res.send(event);
};
module.exports.save = function(req, res) {
let event = req.body;
fs.writeFileSync('../public/data/event/' + req.params.id +
'.json', JSON.stringify(event));
res.send(event);
};
module.exports.getAll = function(req, res) {
let path = '../public/data/event/';
let files = [];
try {
files = fs.readdirSync(path);
} catch (e) {
console.log(e);
res.send('[]');
res.end();
}
let results = '[';
for (let idx = 0; idx < files.length; idx++) {
if (files[idx].indexOf('.json') === files[idx].length - 5) {
results += fs.readFileSync(path + '/' + files[idx]) + ',';
}
}
results = results.substr(0, results.length - 1);
results += ']';
res.setHeader('Content-Type', 'application/json');
res.send(results);
res.end();
};
Это файл веб-сервер, где сервер общих папок
'use strict';
let express = require('express');
let port = process.env.PORT || 5000;
let path = require('path');
let app = express();
let events = require('./scripts/eventsController');
let rootPath = path.normalize(__dirname + '/../');
let bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(express.static(rootPath + '/public'));
app.use('/bower_components', express.static(__dirname + '/../public/lib/'));
app.use("/public", express.static(path.join(__dirname, 'public')));
app.get('/data/event/:id', events.get);
app.get('/data/event', events.getAll);
app.post('/data/event/:id', events.save);
app.get('*', function(req, res) {
res.sendFile(rootPath + '/public/index.html');
});
app.listen(port, function(err) {
if (err) {
console.log('There was an error creating the system');
}
console.log('running server on port ' + port);
});
Это ошибка, которую я получаю от терминала.
Немного оффтопный: как правило вы должны * всегда * дезинфицировать ввод пользователя до используя его для доступа к файлам на диске, выполняя запросы к базе данных (где это применимо) и т. д. – mscdex