2017-12-22 14 views
-1

보기/하위 폴더에서 정적 인 이미지를 seving하지 익스프레스,하지만 난 /views/courses/partials 사이에 하위 폴더를 넣을 때 내 이미지는 작동을 멈 춥니 다. 내가 app.use(express.static(__dirname + "/public"));내가 <code>/views</code> 폴더 및 <code>/views/partials</code> 폴더에서 링크 할 때 내 정적 인 이미지가 완벽하게 작동에 문제가

을 사용하고

내 파일 구조 :

> app 
    - app.js 
    > public 
     > assets 
      > images 
       > icons 
        - link.png 
    > views 
     - landing.ejs 
     > partials 
      - header.ejs 
     > courses 
      - courses.ejs (images is working when linked from here) 
      > partials 
       - lectures.ejs //This file is a partial of courses.ejs (images not working when linked from here) 

내가 사용하는 경로가 필요한 경우 나의

//REQUIREMENTS - requiering files for App.js 
var express = require("express"), 
    app = express(), 
    passport = require("passport"), 
    bodyParser = require("body-parser"), 
    mongoose = require("mongoose"), 
    flash = require("connect-flash"), 
    passportSetup = require("./config/passport"), 
    methodOverride = require("method-override"), 
    User = require("./models/user"), 
    Course = require("./models/course"), 
    middleware = require("./middleware"), 
    path = require("path"); 

//REQUIERING ROUTES - requiering routes files 
var indexRoutes = require("./routes/index"); 
var authRoutes = require("./routes/auth"); 
var adminRoutes = require("./routes/admin"); 
var messageRoutes = require("./routes/message"); 
var courseRoutes = require("./routes/courses"); 

// DATABASE CONNECTION - conecting to mongoDB using enviroment variables 
var dbUrl = "mongodb://localhost/example" || process.env.DATABASEURL; 
mongoose.connect(dbUrl); 

//METHOD OVERRIDE - override http method 
app.use(methodOverride("_method")); 

//FLASH MESSAGES - use flash messages 
app.use(flash()); 

//BODY PARSER - useing bodyparser to easely retreve http info 
app.use(bodyParser.urlencoded({extended: true})); 

//STATIC DIRECTORIES - use static directories for clientside linking 
app.use(express.static(__dirname + "/public")); 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

//VIEW ENGINE - default view engine 
app.set("view engine", "ejs"); 

//PASSPORT CONFIGURATION - setting express session secret 
app.use(require("express-session")({ 
    secret: "************************", 
    resave: false, 
    saveUninitialized: false 
})); 
app.use(passport.initialize()); 
app.use(passport.session()); 

//CURRENT USER - sending current user to every route 
app.use(function(req, res, next){ 
    res.locals.currentUser = req.user; 
    next(); 
}); 

//ROUTES - all routes are used here 
app.use(authRoutes); 
app.use(adminRoutes); 
app.use(messageRoutes); 
app.use(courseRoutes); 
app.use(indexRoutes); 

//LISTENING PORT - port to listen to 
var port = 4000 || process.env.PORT; 

//LISTEN - listen on chosen port 
app.listen(port, process.env.IP,function(){ 
    //Startup message 
    console.log("Server has started!"); 
}); 

그리고 여기가 app.js입니다 여기에 /assets/images/icons/link.png

입니다 엠 Y lectures.ejs 파일 :

<div id="lectures-content" class="page-section--small"> 
    <div class="wrapper--no-padding course-lectures"> 
     <div class="course-lectures__lecture flex"> 
      <div class="course-lectures__left"> 
       <div class="text-area"> 
        <div class="text-area__smallheading">Lecture 1</div> 
        <div class="text-area__text text-area__text--small">This is the first lecture</div> 
       </div> 
      </div> 
      <div class="course-lectures__right flex"> 
       <div class="course-lectures__number">Lecture: 1</div> 
       <div class="course-lectures__arrow"> 
        <img class="course-lectures__image" src="/assets/images/icons/link.jpg" alt=""> 
^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

답변

0

을 내가 불일치가에 있다고 생각 당신의 파일 형식 : link.jpg != link.png

+0

남자가 실수를 한 경우 downvote : D –

+0

와우, 나는 몇 시간 동안 쳐다 봤다. 나는 부끄러워 :( –

0

이 시도 : 그것은 당신의 app.js 같은 디렉토리에 있어야합니다 있는지 확인 당신에게

app.use(express.static('./public')); 

도움이 될 수 있습니다,

+0

시도했지만 작동하지 않았습니다. 내 app.js는 app 디렉토리에 있습니다. (내 질문에 지금 추가) –