[英]`express.static()` keeps routing my files from the route
在處理快速項目時,我正在嘗試使用express.Router
對象來處理我的應用程序路由。 在我的主應用程序文件中,我為所有靜態文件(css,javascript,html)添加了靜態路由。
var express = require('express');
var io = require('socket.io')(app);
var bodyParser = require('body-parser');
var router = require('./include/router');
var app = express();
app.use('/', router);
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.json());
io.on('connection', function(socket) {
});
app.listen(3000);
var express = require('express');
var path = require('path');
var router = express.Router();
router.get('/', function(req, res) {
res.sendFile('/html/index.html');
});
module.exports = router;
當我嘗試訪問localhost:3000
我得到404顯示Error: ENOENT, stat 'C:\\html\\index.html'
此外,當我嘗試直接訪問靜態路由時( http://localhost:300/html/index.html
我相信),但這讓我Cannot GET /html/index.html
。
這是我的公用文件夾的樹
public ├───css ├───hmtl | └───index.html ├───img └───js
我錯了嗎? 我該如何解決?
您必須反轉路由器的順序
app.use('/', router);
app.use(express.static(__dirname + '/public'));
意味着您的路由器將首先被調用,如果沒有中間件處理請求,則express將調用靜態文件,因此,如果您先將靜態中間件放入,則express將首先處理靜態文件。
還建議先放置靜態中間件。
對於你的問題,你應該試試這個:
app.use(express.static(__dirname + '/public/html'));
app.use(express.static(__dirname + '/public'));
app.use('/', router);
Express將首先在public / html文件夾上嘗試靜態文件,然后在其余部分(包括public / html)上,我更喜歡將html文件放在公用文件夾的根目錄上,或者可能放在不同的文件夾上(例如public-html,static-html) )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.