错误:ENOENT:没有这样的文件或目录,错误时统计“/public/main.html”(本机)
Posted
技术标签:
【中文标题】错误:ENOENT:没有这样的文件或目录,错误时统计“/public/main.html”(本机)【英文标题】:Error: ENOENT: no such file or directory, stat '/public/main.html' at Error (native) 【发布时间】: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'”的路径好像不对。 【参考方案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);
【讨论】:
以上是关于错误:ENOENT:没有这样的文件或目录,错误时统计“/public/main.html”(本机)的主要内容,如果未能解决你的问题,请参考以下文章
proxyquire 错误:ENOENT:没有这样的文件或目录,scandir
错误:ENOENT:没有这样的文件或目录,在进行 Yarn 安装时使用 lstat
Heroku CLI 登录失败并出现错误“错误:ENOENT:没有这样的文件或目录,打开 'H:/_netrc'”