【问题标题】:Error: ENOENT: no such file or directory, stat '/public/main.html' at Error (native)错误:ENOENT:没有这样的文件或目录,错误时统计“/public/main.html”(本机)
【发布时间】:2016-07-20 08:10:18
【问题描述】:

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

以及文件夹结构:

【问题讨论】:

  • “'/public/main.html'”的路径好像不对。

标签: javascript html angularjs node.js


【解决方案1】:

由于服务器和索引文件都在“公共”目录内,您可以简单地使用:

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

回答 cmets 中的问题:在 Express 4.x 中,sendfile 方法被 sendFile 方法(全部小写 -> camelCase)取代。可能只是早期版本中的一个疏忽,在后者中得到了修复。

【讨论】:

  • 这对我不起作用,res.sendFile() 和 res.sendfile() 方法有什么区别?
  • @teranteshara 感谢您指出这一点,改进了我的答案。
【解决方案2】:

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

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

【讨论】:

  • “__dirname”代表什么值?
【解决方案3】:

当我提到 dist 文件夹时,我遇到了类似的问题。 index.html 的相对路径是:

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      这个解决方案对我有用:

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

      【讨论】:

        【解决方案6】:
        res.sendfile('/public/main.html');
        

        应该改为

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

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

            【解决方案8】:

            只需使用这个:res.sendFile(__dirname + '/main.html'); 它肯定会奏效。 :)

            【讨论】:

              【解决方案9】:
              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);
              

              【讨论】:

                【解决方案10】:

                我遇到了同样的问题。看来我的客户端代码与我的服务器代码不“同步”(我不太熟悉节点/快递/角度的内部工作以及它们如何相互影响,所以“同步”是我能做到的最好的做)。我只重建了我的服务器代码(在添加了一个 nodejs 库并更新了另一个,以及其他服务器代码更改之后):

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

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

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

                【讨论】:

                  【解决方案11】:

                  我遇到了同样的问题。给heroku发邮件后,我的问题是区分大小写的。我的一个文件全部大写,我不得不从那里进行调整。

                  【讨论】:

                    【解决方案12】:

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

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

                    【讨论】:

                      【解决方案13】:

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

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2017-10-07
                        • 2019-03-09
                        • 2017-12-28
                        • 2022-01-16
                        • 2021-03-30
                        • 1970-01-01
                        • 1970-01-01
                        • 2017-01-22
                        相关资源
                        最近更新 更多