我的node.js应用程序找不到公用文件夹.我已经尝试过使用connect static和表达静态来回答:带有express.js的静态文件以及这个答案:在Node.js中找不到文件
但我仍然无法让它发挥作用.我得到了我试图显示的页面内容,但没有任何指向css和js文件的链接.
有任何想法吗?这是我的app.js文件.
var express = require('express'),
post = require('./routes/posts'),
web = require('./routes/web'),
http = require('http'),
stylus = require('stylus'),
nib = require('nib'),
path = require('path');
var app = express();
function compile(str, path) {
return stylus(str).set('filename', path).use(nib());
}
app.configure(function () {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
app.use(app.router);
app.use(stylus.middleware({src: __dirname + '/public', compile: compile}));
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.bodyParser({ keepExtensions: true, uploadDir: __dirname + '/upload/photos' }));
});
//app.use(app.router);
//Web
app.get('/', web.frontPage);
app.post('/posts', post.findAllPosts);
app.post('/posts/:id', post.findPostById);
app.post('/postAdd', post.addPost);
app.put('/posts/:id', post.updatePost);
app.delete('/posts/:id', post.deletePost);
app.get('*', function(req, res){
res.render('404');
});
http.createServer(app).listen(80);
console.log('Listening on port 80...');
Run Code Online (Sandbox Code Playgroud)
你的问题是由这个引起的:
app.get('*', function(req, res){
res.render('404');
});
Run Code Online (Sandbox Code Playgroud)
因为您在静态中间件之前声明了app.router中间件(它处理了全部路由),路由器也会收到静态文件的所有请求,如果它们没有被任何其他路由处理,它将生成一个404.
解决方案是将静态中间件移到路由器之前.同样也需要应用于Stylus中间件和bodyParser中间件,以确保它们在您的路由之前被调用:
app.use(stylus.middleware({src: __dirname + '/public', compile: compile}));
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.bodyParser({ keepExtensions: true, uploadDir: __dirname + '/upload/photos' }));
app.use(app.router);
Run Code Online (Sandbox Code Playgroud)
(虽然它似乎可以跳过bodyParser中间件,因为你正在使用的json,urlencoded而multipart中间件已;在bodyParser中间件仅仅是这三个围绕一个非常薄的包装)
| 归档时间: |
|
| 查看次数: |
4549 次 |
| 最近记录: |