Tro*_*roy 6 cookies session node.js browser-sync
我最近从Express Web应用程序迁移到了nodejs 的BrowserSync应用程序.使用Express,如果我想设置一个cookie,我的配置看起来像这样:
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);
Run Code Online (Sandbox Code Playgroud)
我的团队已经开始使用BrowserSync(通过gulp任务),到目前为止,我的配置看起来像这样:
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
});
});
Run Code Online (Sandbox Code Playgroud)
但是,该res对象没有名为"cookie"的方法.是否有类似于Expressjs的会话中间件,它将作为BrowserSync中间件工作?还有另一种在BrowserSync服务器中设置cookie的方法吗?
小智 -2
浏览器同步使用connect,它的 API 与 express 略有不同。此配置帮助我使用浏览器同步向我的响应添加标头和 cookie:
browsersync: {
open: false,
port: 8080,
server: {
baseDir: distDir,
middleware: [
function(req, res, next) {
res.setHeader('hello', 'world');
res.cookie('someCookie', 'cookieVal');
next();
}
]
}
},
Run Code Online (Sandbox Code Playgroud)