an *_*wig 10 static-files node.js express
在处理快速项目时,我正在尝试使用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);
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
当我尝试访问时,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
我错了吗?我该如何解决?
Ser*_*ino 14
您必须反转路由器的顺序
app.use('/', router);
app.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)
意味着您的路由器将首先被调用,如果没有中间件处理请求,则express将调用静态文件,因此,如果您先将静态中间件放入,则express将首先处理静态文件.
还建议先放置静态中间件.
对于你的问题,你应该试试这个:
app.use(express.static(__dirname + '/public/html'));
app.use(express.static(__dirname + '/public'));
app.use('/', router);
Run Code Online (Sandbox Code Playgroud)
Express将首先在public/html文件夹上尝试静态文件,然后在其余部分(包括public/html)上,我更喜欢将html文件放在公用文件夹的根目录上,或者可能放在不同的文件夹上(例如public-html,static-html) )
| 归档时间: |
|
| 查看次数: |
14332 次 |
| 最近记录: |