簡體   English   中英

ExpressJS不使用app.use提供靜態模板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM