2016-10-19 4 views
0

정적 파일을 라우팅하고 처리하는 데 문제가 있습니다.Node.js Serve-static not working

내 디렉토리 구조는 다음과 같다 :

app/  
--app.js 
—-public/ 
    —-js/ 
    —-main.js 
—-views/ 
    —-pages/ 
    —-index.jade 

이것은 내가 내 서버에 설정 한 방법입니다

는 app.js를

var express = require('express') 
var path = require('path') 
var serveStatic = require('serve-static') 
var publicPath = path.join(__dirname,'..','public'); 
var port = process.env.PORT || 3000 
var app = express() 

app.set('views', './views/pages') 
app.set('view engine', 'jade') 
app.use('/public', serveStatic(publicPath)); 

app.listen(port) 

console.log("port is " + port) 


app.get('/', function(req, res) { 
     res.render('index', { 
      title: 'index', 
     }) 
}) 

index.jade

doctype 
html 
    head 
     meta(charset="utf-8") 
     title index 
     script(src="/public/js/main.js”) 
    body 
     h1=title 

하지만 이것은 h 일입니다.

GET http://localhost:3000/public/js/main.js 404 (Not Found) 

"서브 스탄시"부품을 작동하도록 설정하려면 어떻게해야합니까? 감사합니다.

답변

0

잘못된 매개 변수를 전달 중입니다. 다른 디렉토리에서 정적 파일을 제공하기위한

올바른 예 난 당신이 경로에서 대중을 제거 할 필요가 있다고 생각 더 많은 옵션 https://github.com/expressjs/serve-static

+0

감사합니다. 작동하지 않습니다. – kanechou

+0

공개 경로를 확인하십시오 ... path.join (__ dirname, '../public')을 시도하십시오. – abhirathore2006

0

에 대한

This example shows a simple way to search through multiple directories. Files are look for in public-optimized/ first, then public/ second as a fallback. 

var express = require('express') 
var serveStatic = require('serve-static') 

var app = express() 

app.use(serveStatic(__dirname + '/public-optimized')) 
app.use(serveStatic(__dirname + '/public')) 
app.listen(3000) 

체크 아웃 워드 프로세서 될 것이다.

script(src="/js/main.js”) 

서버에 정적 리소스가 공용 폴더에서 제공된다는 것을 알 수 있습니다.