sia*_*sia 53 get node.js express
这就是我所拥有的,文件名"default.htm"实际存在并在使用NodeJS执行readFile时加载.
var express = require('express');
var app = express();
app.use(express.static(__dirname + '/default.htm'));
app.listen(process.env.PORT);
Run Code Online (Sandbox Code Playgroud)
错误(在浏览器中):
Cannot GET /
Run Code Online (Sandbox Code Playgroud)
Sde*_*ock 35
您通常希望渲染这样的模板:
app.get('/', function(req, res){
res.render('index.ejs');
});
Run Code Online (Sandbox Code Playgroud)
但是,您也可以提供静态内容 - 这样做可以使用:
app.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)
现在/public,项目目录中的所有内容都将作为静态内容传递到您网站的根目录,例如,如果您放置default.htm在公共文件夹中,如果可以通过访问/default.htm
查看快速API和Connect Static中间件文档以获取更多信息.
小智 11
我注意到我忘记了路线开头的“斜线”,如下所示,我遇到了同样的错误:
错误的 :
app.get('api/courses', (req, res) => { ... }
)
Run Code Online (Sandbox Code Playgroud)
正确的 :
app.get('/api/courses', (req, res) => { ... }
)
Run Code Online (Sandbox Code Playgroud)
您需要定义根路由.
app.get('/', function(req, res) {
// do something here.
});
Run Code Online (Sandbox Code Playgroud)
哦,你不能指定一个文件express.static.它需要是一个目录.该app.get('/'....负责将相应地呈现该文件.您可以使用快速'渲染方法,但您必须添加一些配置选项,这些选项将告诉您的视图在哪里,传统上在app/views/文件夹中.
小智 5
我遇到了同样的问题,所以这就是我提出的问题.这就是我跑步时文件夹结构的样子node server.js
app/
index.html
server.js
Run Code Online (Sandbox Code Playgroud)
打印出__dirname路径后,我意识到__dirname路径是我的服务器运行的地方(app/).
那么,你的问题的答案是这样的:
如果您的server.js文件与您尝试呈现的文件位于同一文件夹中,那么
app.use(express.static(__dirname + '/default.htm'));
Run Code Online (Sandbox Code Playgroud)
应该是
app.use(express.static(__dirname));
Run Code Online (Sandbox Code Playgroud)
如果你有一个像这样的文件夹树,你唯一想要使用原始语法的方法是:
app/
index.html
server.js
Run Code Online (Sandbox Code Playgroud)
在目录index.html中的哪个位置app/,而server.js在根目录中(即与目录相同的级别app/).
总的来说,您的代码可能如下所示:
var express = require('express');
var app = express();
app.use(express.static(__dirname));
app.listen(process.env.PORT);
Run Code Online (Sandbox Code Playgroud)
我发现自己在这个页面上,因为我也收到了Cannot GET/消息.我的情况与我express.static()用于定位文件夹的情况不同,正如之前的答案所提供的那样,而不是像OP那样的文件.
我在通过Express'文档挖掘后发现的是express.static()将其索引文件定义为index.html,而我的文件被命名index.htm.
为了将其与OP的问题联系起来,有两种选择:
1:使用其他答案中建议的代码
app.use(express.static(__dirname));
Run Code Online (Sandbox Code Playgroud)
然后将default.htm文件重命名为index.html
要么
2:index在调用时添加属性express.static()以将其指向所需的索引文件:
app.use(express.static(__dirname, { index: 'default.htm' }));
Run Code Online (Sandbox Code Playgroud)