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

时间:2016-03-31 18:15:09

标签: javascript html angularjs node.js

这是我的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>

文件夹结构:

12 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:1)

你错过了。请记住相对目录是

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

答案 2 :(得分:1)

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

应改为

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

答案 3 :(得分:1)

此解决方案适用于我:

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

答案 4 :(得分:1)

当我提到kubectl logs -n kubeless -l kubeless=controller文件夹时,我遇到了类似的问题。 index.html的相对路径为:

dist

答案 5 :(得分:1)

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);

答案 6 :(得分:0)

我遇到了同样的问题。通过电子邮件发送heroku后,我的是一个区分大小写的问题。我的一个文件是全部大写,我不得不从那里做出调整。

答案 7 :(得分:0)

对我来说使用“。”在路径中没有用,相反,我把它调整为:

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

答案 8 :(得分:0)

只需使用:[[ ... ]] 肯定会的。 :)

答案 9 :(得分:0)

我有同样的问题。看来我的客户端代码与我的服务器代码不“同步”(我不太了解node / express / angular的内部工作原理以及它们如何相互影响,所以“同步”是我所能做到的最好的做)。我只是用以下方法重建了服务器代码(添加了一个nodejs库并更新了另一个库之后,包括其他服务器代码更改):

npm run build.server(对于我的项目,它仅构建服务器端。在测试服务器更改时有时会运行此操作,因为在没有监视的情况下重建客户端代码也可能需要很长时间)

一旦我重建了客户端代码,这个问题就解决了:

npm run build -- dev(对于我的项目,它会构建所有内容,服务器和客户端代码)

答案 10 :(得分:-1)

虽然OP的原因因此错误而有所不同,但由于其他原因我得到了相同的错误,因此我将其发布给其他来到这里的人。

我有一个服务器端shell脚本正在更改当前目录。由于我们在""中使用相对路径,因此在此脚本运行后我开始看到此错误。这个shell脚本由Node运行。

答案 11 :(得分:-1)

我的server.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);