错误:ENOENT:没有这样的文件或目录,错误(本机)的stat'/public/main.html'

pra*_*gan 17 html javascript node.js angularjs

这是我的server.js档案:

var express = require('express'),
    app = express();  
app 
    .use(express.static('./public'))
    .get('*',function (req,res) {
        res.sendfile('/public/main.html');
        })
 .listen(3000);
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

和文件夹结构:

Ber*_*ier 7

由于服务器和索引文件都位于"公共"目录中,因此您只需使用:

res.sendfile('./main.html');
Run Code Online (Sandbox Code Playgroud)

要回答评论中的问题:在Express 4.x中,sendfile方法被替换为sendFile方法(全部小写 - > camelCase).可能只是早期版本的疏忽,后者已得到修复.


小智 7

__dirname 已被弃用,建议的解决方案目前可能不起作用(2021 年 8 月)。在 Express 4.x 中,这已得到简化,您不需要使用“path”模块,您只需指定一个根选项,如下所示:

app.get('*', (req, res) => {
  res.sendFile('main.html', {root: 'public'});
});
Run Code Online (Sandbox Code Playgroud)


小智 5

对我来说使用“.” 在路径中不起作用,相反,我将其调整为:

res.sendFile(__dirname + '/public/main.html');
Run Code Online (Sandbox Code Playgroud)