2012-12-05 24 views
1

我試過localhost:3000/index.html(我把靜態頁面放在這裏),localhost:3000/javascripts/dio.js(我把js放在這裏) localhost:3000/images/dio1.jpg(我把圖片放在這裏), 全部無法訪問。爲什麼?哪裏不對?Express.js即使在配置完express.static後也無法訪問靜態文件

我app.js定義:

var express = require('express') 
var app=express() 
app.bcrypt = require('bcrypt') 
app.im=require('imagemagick') 
app.fs=require('fs') 
app.application_root = __dirname 
app.path = require("path") 
app.mongoose = require("mongoose") 

var config=require('./config.js')(app,express) 

var models = require('./models/models.js')(app.mongoose) 
models.UserModel = models.UserModel 
models.CommentModel = models.CommentModel 
models.ItemModel = models.ItemModel 

require('./routes')(app, models) 

app.listen(3000); 
console.log("Listening on port 3000") 

這裏是我的config.js定義:

module.exports = function(app, express, mongoose){ 
    var config=this 

    app.configure(function(){ 
     app.set('views',__dirname+'/views') 
     app.set('view engine','jade') 
     app.set('view engine', {layout:true}) 

     app.use(express.bodyParser()) 
     app.use(express.methodOverride()) 
     app.use(express.cookieParser()) 
     app.use(express.session({secret: 'topsecret',store: new express.session.MemoryStore})) 
     app.use(app.router) 
     app.use(express.static(app.path.join(app.application_root+"public"))) 
     app.use(express.errorHandler({dumpExceptions:true,showStack:true})) 
     app.use(express.bodyParser({keepExtensions: true, uploadDir:"./public/uploads"})) 
    }) 

    /*DB part:*/ 
    app.mongoose.connect('mongodb://localhost/dio_database') 

    return config 
} 

回答

1

而不將加盟:

app.path.join(app.application_root+"public") 

無論是各部分應作爲單獨的參數傳遞給path.join

app.path.join(app.application_root, "public") 

或者,如果你寧願串聯,__dirname不會有拖尾斜槓application_root,所以你需要添加一個:

app.application_root + '/public' 
+0

是啊!興奮地看到它終於有效!萬分感謝! –

2

嘗試這種風格:

app.use('/public', express.static(__dirname + "/public")); 
相關問題