저는 serve와 gulp-webserver 같은 심플한 웹서버 모듈을 자주 사용하는데요. 이런 모듈은 너무 심플해서인지 GET 방식은 문제가 없지만 POST 요청에는 응답하지 못하고 Cannot POST 에러가 납니다.
그래서 gulp-webserver에서 미들웨어를 만들어 문제를 해결한 경험이 있습니다. 다음 gulpfile.js 코드는 ‘./dist’ 경로에 대해 localhost:4000 으로 웹서버를 띄우고 POST 요청도 지원되는 예제입니다. middleware 부분만 참고하시면 됩니다.
var gulp = require('gulp'), fs = require('fs'), path = require('path'), webserver = require('gulp-webserver'); gulp.task('server', function() { var dist = './dist'; return gulp.src(dist).pipe(webserver({ host: '0.0.0.0', port: 4000, livereload: false, directoryListing: { enable: false, path: dist }, middleware: [ (req, res, next) => { var filepath = path.join(path.resolve(__dirname), dist, req.url); if ( 'POSTPUTDELETE'.indexOf(req.method.toUpperCase()) > -1 && fs.existsSync(filepath) && fs.statSync(filepath).isFile() ) { res.end(fs.readFileSync(filepath)); } next(); } ], open: false })); });