即使configuration了express.static,Express.js也无法访问静态文件

我试过localhost:3000 / index.html(我把一个静态页面),本地主机:3000 / javascripts / dio.js(我把js)localhost:3000 / images / dio1.jpg(我把图片放在哪里),全部无法访问。 为什么? 哪里不对?

我的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 } 

而不是拼接连接:

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

每个部分都应该作为一个单独的parameter passing给path.join

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

或者,如果您宁愿连接, __dirname将不会有application_root的结尾斜杠,所以您需要添加一个:

  app.application_root + '/public' 

尝试这种风格:

 app.use('/public', express.static(__dirname + "/public"));