ExpressJS不使用app.use提供静态模板

我有我想通过app.use使用ExpressJS作为静态页面的forms,但我得到一个错误。

const express = require('express'); var app = express(); app.use(express.static(__dirname + 'public')); app.listen(3000); 

这是我的文件夹结构

 App Name -node_modules/ -public/ login.html -package-lock.json -package.json -server.js 

我的错误是不能GET /login时,我去localhost:3000 /login。 我能做些什么来解决这个问题? 这似乎工作,当我使用模板渲染使用把手。

编辑 :我也运行在Windows 10,如果有帮助。 把app.use(express.static(__dirname + '**/public**')); 也没有解决这个问题。

解决scheme:

1。

  const express = require('express'); const path = require('path'); var app = express(); app.use(express.static(path.join(__dirname, 'public'),{ extensions: ['html']} )); app.listen(3000); 

2。

 const express = require('express'); const path = require('path'); var app = express(); app.get('/login', function(req, res){ res.sendFile(__dirname + '/public/login.html') }) app.listen(3000) 

3。

 const express = require('express'); const path = require('path'); var app = express(); app.use(express.static(__dirname + '/public/')); app.get('/login', function(req, res){ res.sendFile(__dirname + "/public/login.html"); }); app.listen(3000) 

从官方文件

console.log(__dirname + 'public')你得到了C:\ Users \ Daniel \ Desktop \ web \ drone-apppublic这是不正确的目录。

最安全的方法是使用node.js app.use(express.static(path.join(__dirname, 'public')));提供的pathlib app.use(express.static(path.join(__dirname, 'public')));

C:\ Users \用户丹尼尔\桌面\networking\无人机应用程序\ PUBLIC \

最后是因为它提供了静态文件,所以需要包含我刚刚testing过的文件扩展名,它只能在localhost:3000/login.html如果你想删除扩展名为html的文件,你可以将规则添加到静态函数中

app.use(express.static(path.join(__dirname, 'public'),{ extensions: ['html']} ));

你可以在这里find剩下的可用的函数属性

如果它说无法获得CANNOT GET LOGIN并告诉你,它不能login目录,但不会抛出一个错误,这意味着你没有指定login目录在你的server.js文件

请在尝试重新连接之前添加这段代码。

 app.get('/doesItWork', function(req,res){ res.send('it works!!'); }) app.get('/login', function(req, res){ res.sendFile(__dirname + '/public/login.html') })