2014-12-08 34 views
6

Niedawno przeniosłem się z aplikacji internetowej Express do aplikacji BrowserSync dla nodejs. Korzystanie Express, gdybym chciał ustawić cookie, mój config będzie wyglądać mniej więcej tak:Jak ustawić plik cookie sesji za pomocą oprogramowania pośredniego BrowserSync?

var express = require('express'); 
var session = require('express-session'); 
var finalhandler = require('finalhandler'); 
var serveStatic = require('serve-static'), 
    serve = serveStatic(__dirname); 

var app = express(); 
app.use(session({ // see https://github.com/expressjs/session 
    secret: 'keyboard cat', 
    resave: false, 
    saveUninitialized: false 
    })) 
    .use(function(req, res, next) { 
    res.cookie('myCookie', 'my cookie value'); 
    var done = finalhandler(req, res); 
    serve(req, res, done); 
    }); 
app.listen(8080); 

Mój zespół zaczął używać BrowserSync (poprzez zadania łyk), a mój config, do tej pory, wygląda mniej więcej tak :

var gulp = require('gulp'), 
    browserSync = require('browser-sync'), 
    gulpLoadPlugins = require('gulp-load-plugins'), 
    plugins = gulpLoadPlugins(); 

gulp.task('browser-sync', function() { 
    browserSync({ 
     server: { 
      baseDir: "./", 
      middleware: [ 
       function(req, res, next) { 
        res.cookie('myCookie', 'my cookie value'); 
        next(); 
       } 
      ] 
     }, 
     port: 8080 
    }); 
}); 

Jednak obiekt res nie ma metody o nazwie "cookie". Czy jest coś podobnego do session middleware for Expressjs, które będzie działać jako oprogramowanie pośredniczące BrowserSync? Czy istnieje inny sposób ustawiania plików cookie na serwerze BrowserSync?

Odpowiedz

-2

Synchronizacja przeglądarki używa connect, która ma nieco inny interfejs API niż ekspresowy. Konfiguracja ta pracował dla mnie, aby dodać nagłówek i ciasteczko do moich odpowiedzi za pomocą przeglądarki synchronizacji:

browsersync: { 
    open: false, 
    port: 8080, 
    server: { 
     baseDir: distDir, 
     middleware: [ 
     function(req, res, next) { 
      res.setHeader('hello', 'world'); 
      res.cookie('someCookie', 'cookieVal'); 
      next(); 
     } 
     ] 
    } 
    }, 
+2

Nie działa to dla mnie, mówi mi "TypeError: res.cookie nie jest funkcją". Czy to nadal działa dla Ciebie? Jestem na browserSync 2.8.2 –

3

miałem ten sam TypeError: res.cookie is not a function -error. Następująca konfiguracja działa dla mnie.

browsersync: { 
    open: false, 
    port: 8080, 
    server: { 
     baseDir: distDir, 
     middleware: [ 
     function(req, res, next) { 
      res.setHeader('set-cookie', 'name=value'); 

      next(); 
     } 
     ] 
    } 
    }, 
Powiązane problemy