[英]ExpressJS not serving static templates using app.use
我有一個表格,試圖通過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時無法獲取 / login。 我該怎么做才能解決此問題? 當我使用帶有把手的模板渲染時,它似乎可以正常工作。
編輯 :如果有幫助,我也在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)
如果說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')
})
從官方文件
如從console.log(__dirname + 'public')
您得到了C:\\ Users \\ Daniel \\ Desktop \\ web \\ drone-apppublic ,這是不正確的目錄。
最安全的方法是使用node.js app.use(express.static(path.join(__dirname, 'public')));
提供的路徑庫app.use(express.static(path.join(__dirname, 'public')));
C:\\ Users \\用戶丹尼爾\\桌面\\網絡\\無人機應用程序\\ PUBLIC \\
最后,因為它正在提供靜態文件,所以您需要包括我剛剛測試過的文件擴展名,並且它僅與localhost:3000/login.html
如果要刪除html文件的擴展名,可以將規則添加到靜態函數中,例如
app.use(express.static(path.join(__dirname, 'public'),{ extensions: ['html']} ));
您可以在此處找到其余可用的函數屬性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.