Почему я получаю сообщение об ошибке при обработке статического файла для двух маршрутов в файле node.js с помощью метода sendFile () - PullRequest
1 голос
/ 11 марта 2019

Я попытался отправить статический html-файл для двух маршрутов '/' и '/ test'. Он работает для '/' маршрута, но не '/ test' /

Я получаю следующую ошибку:

TypeError: path must be absolute or specify root to res.sendFile
    at ServerResponse.sendFile (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\response.js:421:11)
    at E:\sairam\javascript\node\Node middleware\index.js:11:9
    at Layer.handle [as handle_request] (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\layer.js:95:5)
    at next (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\layer.js:95:5)
    at E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\index.js:335:12)
    at next (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\index.js:275:10)
    at SendStream.error (E:\sairam\javascript\node\Node middleware\node_modules\serve-static\index.js:121:7)

Это мой app.js

let express = require('express');
let app = express();

app.use(express.static('public'));

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

Файл index.html находится в общедоступной папке .. он был статическим контейнером.

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

Если вы хотите использовать относительные пути для res.sendFile , вам нужно указать корневую опцию.Используйте следующий код для обслуживания index.html, предполагая, что он находится в том же каталоге, что и источник приложения Node.

Вы можете получить текущий каталог с __ dirname .

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

Пожалуйста, укажите также node.js TypeError: путь должен быть абсолютным или указать корень для res.sendFile [не удалось проанализировать JSON]

(спасибо Saurabh Mistry за ссылку)

0 голосов
/ 11 марта 2019

попробуйте так:

app.get(['/','test'], function(req,res){
    res.sendFile(__dirname + '/public/'+ 'index.html');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...