express.static을 통해 단일 페이지 앱을 제공하는 nodejs 애플리케이션이 있습니다. 이 모든 것이 잘 작동하지만 간단한 미들웨어를 만들 때 :
app.use(function(req, res, next){
console.log('%s %s', req.method, req.url);
next();
});
app.use(express.static(path.join(__dirname, 'client')));
클라이언트에서 콘텐츠를로드하려는 시도는 다음과 함께 실패합니다.
TypeError: Object function (req, res, next){
console.log('%s %s', req.method, req.url);
next();
} has no method 'concat'
express.static 호출 후에 미들웨어를 사용하면 잘 작동하지만 정적 콘텐츠에 대해서는 호출되지 않습니다. 플래시 메시지 (연결 플래시에서)가 쿠키로 정적 콘텐츠에 전송 될 수 있도록 미들웨어를 설정해야합니다.
정적 콘텐츠를 포함한 모든 콘텐츠에 미들웨어를 어떻게 사용할 수 있는지 아는 사람이 있습니까? 결국 나는 두 개의 폴더, 하나는 공개 및 하나는 비공개 (여권을 통해 인증 됨)를 제공 할 것입니다.
귀하의 질문에 대한 최소한의 구현을 모았으며 저에게 효과적입니다.
var express = require('express')
var path = require('path')
var app = express()
app.use(function(req, res, next) {
console.log('Middleware says %s %s', req.method, req.url);
next();
})
app.use(express.static(path.join(__dirname, 'client')))
app.listen(8080, function() {
console.log('server is ready')
})
그런 다음 서버를 시작했습니다.
$ node so.js
server is ready
http://localhost:8080/foo.txt
내 브라우저에 로드
Middleware says GET /foo.txt
저는 Express 3.6.0을 사용하고 있습니다. 이전 버전의 Express를 사용하고 있다면이 버그와 유사한 버그를 발견했을 것 입니다. 업데이트로 문제가 해결되지 않으면 더 많은 코드, 아마도 실행 가능하지만 최소한의 문제 예제를 포함하도록 질문을 업데이트하는 것이 좋습니다. 도움이 되었기를 바랍니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다