2015-08-06 6 views
1

Надеюсь, этот вопрос не слишком смешон.Node.js: Отправка файла в тот же каталог

var app = require('express')(); 
var http = require('http').Server(app); 


app.get('/', function(req,res){ 
    res.sendFile('index.html'); 
}); 

http.listen(3000,function(){ 
    console.log('/','listening on *:3000'); 
}); 

Я бегу Linux Mint, и всякий раз, когда я пытаюсь запустить этот локально я получаю следующее сообщение об ошибке:

Error: ENOENT, stat 'index.html' at Error (native)

Я считаю, что это что-то делать с каталогом. Файл index.html находится в той же папке, что и файл index.js. Я искал вокруг и не мог найти эту точную ошибку в этом случае, так что я немного смущен. Я помещаю неправильный каталог для

app.get('/', function(req,res){ 
    res.sendFile('index.html'); 
}); 
+0

Если в объекте параметров не указан параметр root, путь должен быть абсолютным путем для файла. ([express docs] (http://expressjs.com/api.html#res.sendFile)) – philipvr

+0

Привет, спасибо. Я прочитаю этот документ и попытаюсь понять, что это значит. Очень ценится. – Anthony

ответ

1

Необходимо указать, где именно находится ваш файл index.html. Попробуйте использовать следующий фрагмент кода

var app = require('express')(); 
var http = require('http').Server(app); 
var path = require('path'); 


app.get('/', function(req,res){ 
    res.sendFile(path.join(__dirname, 'index.html')); 
}); 

http.listen(3000,function(){ 
    console.log('/','listening on *:3000'); 
}); 
+0

Он работал как шарм. Большое спасибо. Немного смущает то, что происходит, но будет смотреть на документы, чтобы попытаться их увидеть. Еще раз спасибо. Также я поддержал вас, но он не является публичным. :/sorry – Anthony

+0

Я рад, что он сработал. В основном, то, что происходит, __dirname сообщит вашему серверу имя каталога исполняемого в настоящее время скрипта (который в вашем случае - index.js). Затем, используя path.join, мы присоединяем имя пути к каталогу и имя файла, который вы пытаетесь отправить (index.html). Мы не можем просто отправить файл index.html напрямую, потому что сервер не знает, где искать файл, который вы пытаетесь отправить (хотя они оба находятся в одном каталоге). Именно так работают серверы. Вы должны обязательно заглянуть в документы, потому что сначала это может немного запутать. –