是的 - 似乎有一个包和方法就是为了这个。
import Analytics from 'analytics-node'
// if no anonymousId, send a randomly generated one
// otherwise grab existing to include in call to segment
let anonymousId
if (cookies.ajs_anonymous_id) {
anonymousId = cookies.ajs_anonymous_id
} else {
anonymousId = = uuid.v4()
res.cookie('ajs_anonymous_id', anonymousId )
}
对于完整的例子,我会参考他们的文档:
https ://segment.com/docs/guides/how-to-guides/collect-pageviews-serverside/
对于 NextJS,我希望您必须摆脱他们的服务器默认实现并构建一个包装器以允许您添加这种类型的中间件。
const express = require('express');
const bodyParser = require('body-parser');
const next = require('next');
const host = process.env.LOCAL_ADDRESS || '0.0.0.0';
const port = parseInt(process.env.NODE_PORT, 10) || 3000;
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev, dir: 'app' });
const handle = app.getRequestHandler();
app.prepare().then(() => {
const server = express();
server.use(bodyParser.urlencoded({ extended: false }));
server.set('trust proxy', true);
server.use(customMiddleware);
server.all('*', (req, ...args) => {
// Log the request only if we need to (we don't log all static asset requests)
if (req.log) {
req.log.info('incoming request');
}
return handle(req, ...args);
});
server.listen(port, host, (err) => {
if (err) throw err;
console.log(`> Ready on http://${host}:${port}`);
});
});
然后启动应用程序node app/server
希望这有助于您入门!