如何通过BrowserSync中间件设置会话cookie?

我最近从Express Web应用程序移到了Nodejs的BrowserSync应用程序。 使用Express,如果我想设置一个cookie,我的configuration看起来是这样的:

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); 

我的团队已经开始使用BrowserSync(通过吞咽任务),到目前为止,我的configuration看起来像这样:

 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 }); }); 

但是, res对象没有名为“cookie”的方法。 有没有类似Expressj的会话中间件 ,可以作为BrowserSync中间件使用? 是否有另一种方法来在BrowserSync服务器中设置Cookie?

我有相同的TypeError: res.cookie is not a function错误。 以下configuration适用于我。

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

浏览器同步使用连接 ,它有一个比expression稍微不同的API。 这个configuration为我工作,使用浏览器同步添加一个头和一个cookie到我的回应:

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