web-dev-qa-db-ja.com

エラー:ENOENT:そのようなファイルまたはディレクトリはありません。エラー(ネイティブ)でstat '/public/main.html'

これは私の 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>

そして、フォルダー構造:

16
pradeep murugan

サーバーとインデックスファイルの両方が「パブリック」ディレクトリ内にあるため、単純に使用できます。

res.sendfile('./main.html');

コメントの質問に答えるには:Express 4.xでは、sendfileメソッドはsendFileメソッドに置き換えられました(すべて小文字-> camelCase)。おそらく初期バージョンでの見落としでしたが、後者では修正されました。

7
Bernard Saucier
res.sendfile('/public/main.html');

に変更する必要があります

res.sendfile('./public/main.html');
2
Guy Korland

このソリューションは私のために働く:

res.sendfile('./main.html');
2
Niloo

distフォルダーを参照したときに同様の問題が発生しました。 index.htmlへの相対パスは次のとおりです。

app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist/project-name/index.html'));
});
2
akshaymittal143

ドットを見逃しました。相対ディレクトリは

res.sendfile('./public/main.html');
2
vkstack

これを使うだけです:res.sendFile(__dirname + '/main.html');それは間違いなく動作します。 :)

1
pbhadu
server.js


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

app.use(express.static(__dirname + '/dist/projectName'));

app.post('/*', function(req, res){
    res.sendFile(__dirname +  '/dist/projectName/index.html');
});
app.listen(4200);
1
pranav rai

「。」を使用している私にとってパスでは機能しませんでしたが、代わりに次のように微調整しました:

res.sendFile(__dirname + '/public/main.html');
1
Shubham joshi

同じ問題がありました。 herokuにメールを送信した後、私の問題は大文字と小文字の区別の問題でした。ファイルの1つがすべて大文字になっていたので、そこから調整する必要がありました。

0
jared thomas