我有表单,我试图通过app.use使用ExpressJS作为静态页面,但我收到错误。
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
当我转到localhost:3000 / login时,我的错误是无法GET /登录。我该怎么做才能解决这个问题?当我使用把手使用模板渲染时,它似乎有效。
编辑:如果有帮助,我也会在Windows 10上运行。
放app.use(express.static(__dirname + '**/public**'));
也不能解决问题。
解决方案:
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)
答案 0 :(得分:1)
如果显示 CANNOT GET 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')
})
答案 1 :(得分:1)
如console.log(__dirname + 'public')
所示 C:\ Users \ Daniel \ Desktop \ web \ drone-apppublic ,这是错误的目录。
最安全的方法是使用node.js提供的路径lib
app.use(express.static(path.join(__dirname, 'public')));
<强> C:\用户\丹尼尔\桌面\网络\雄蜂应用内\公共\ 强>
最后,因为它需要提供静态文件,所以需要包含文件扩展名
我只测试了它,它只适用于localhost:3000/login.html
如果要删除html文件的扩展名,可以将规则添加到静态函数中
app.use(express.static(path.join(__dirname, 'public'),{
extensions: ['html']}
));
您可以找到其余可用的功能属性here