Ошибка: ENOENT: нет такого файла или каталога, stat '/public/main.html' в Error (native)
![]()
Это мой файл server.js
:
var express = require('express'),
app = express();
app
.use(express.static('./public'))
.get('*',function (req,res) {
res.sendfile('/public/main.html');
})
.listen(3000);
Это мой main.html
:
<!DOCTYPE html>
<html>
<head>
<titel>Contacts</titel>
<base href'/'>
</head>
<body>
<div class="container">
<div class="page-header">
<h1>Contatcs</h1>
</div>
</div>
</body>
</html>
И структура папки:
![]()
Ответы
Ответ 1
Поскольку и сервер, и индексный файл находятся ВНУТРИ публичного каталога, вы можете просто использовать:
res.sendfile('./main.html');
Чтобы ответить на вопрос в комментариях: В Express 4.x метод sendfile
был заменен методом sendFile
(все строчные буквы → camelCase). Вероятно, просто упущение в ранних версиях, которое было исправлено в последних.
Ответ 2
Вы пропустили точку. Имейте в виду относительный каталог
res.sendfile('./public/main.html');
Ответ 3
res.sendfile('/public/main.html');
следует изменить на
res.sendfile('./public/main.html');
Ответ 4
Это решение работает для меня:
res.sendfile('./main.html');
Ответ 5
У меня была похожая проблема, когда я ссылался на папку dist
. относительный путь к index.html был:
app.get('*', (req, res) => { res.sendFile(path.join(__dirname, 'dist/project-name/index.html')); });
Ответ 6
У меня была та же проблема. После отправки по электронной почте герою моя проблема была чувствительной к регистру. Один из моих файлов был во всех кепках, и я должен был внести коррективы оттуда.
Ответ 7
Для меня использование "." на пути не работает, вместо этого я изменил его как:
res.sendFile(__dirname + '/public/main.html');
Ответ 8
мой сервер .js
const express = require('express');
const app = express();
app.use(express.static(__dirname + '/dist/projectName'));
app.get('/*', function(req, res){
res.sendFile(__dirname + '/dist/projectName/index.html');
});
app.listen(4200);
Ответ 9
Хотя причина OP отличается от этой ошибки, я получил ту же ошибку из-за другой причины, поэтому я отправляю ее для других, которые приходят сюда.
У меня была серверная оболочка script, которая меняла текущий каталог. Поскольку мы используем относительные пути в sendfile
, я начал видеть эту ошибку после этого script. Эта оболочка script выполнялась Node.