Как обеспечить локальный каталог с помощью fs.readdir()

Итак, у меня есть экспресс-сервер, который по запросу GET возвращает файл json.

app.get('/server-generated/pages.json',function(req, res) {
  fs.readdir('public/pages',function(err,data){
    res.json(data || err);//temp error checking
  });
});

он отлично работает, когда я запускаю приложение node или приложение навсегда в его каталоге, но когда я запускаю его как постоянную службу из выскочки Ubuntu при запуске exec forever start /home/*****/transfer/app.js, я получаю это в ответ

{
  "errno": 34,
  "code": "ENOENT",
  "path": "public/pages"
}

что такое ошибка каталога, если я прав? полная иерархия папок выглядит так: /home/****/transfer/public/pages

Как мне написать каталог, который будет работать на любом компьютере (windows/ubuntu), на котором запущено приложение локально или из выскочки?


person Jim Jones    schedule 29.07.2014    source источник


Ответы (1)


вы должны использовать путь относительно каталога, в котором находится модуль:

var path = require('path');

fs.readdir(path.join(__dirname, 'public/pages'), function(err, data) {
    res.json(data || err);
});
person micnic    schedule 29.07.2014