如果你没有设置JWT_TOKEN,我们有一些路由逻辑可以将你踢到主页…我想在页面加载之前/在调用js之前设置它.
我该怎么做呢 ?
解决方法:
您必须注册localStorage项目,如下所示:
await page.evaluate(() => {
localStorage.setItem('token', 'example-token');
});
您应该在页面页面之后执行此操作.浏览器必须有一个URL才能在其上注册本地存储项目.在此之后,再次输入相同的页面,这个时间令牌应该在页面加载之前.
这是一个完整的例子:
const puppeteer = require('puppeteer');
const http = require('http');
const html = `
<html>
<body>
<div id="element"></div>
<script>
document.getElementById('element').innerHTML =
localStorage.getItem('token') ? 'signed' : 'not signed';
</script>
</body>
</html>`;
http
.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write(html);
res.end();
})
.listen(8080);
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://localhost:8080/');
await page.evaluate(() => {
localStorage.setItem('token', 'example-token');
});
await page.goto('http://localhost:8080/');
const text = await page.evaluate(
() => document.querySelector('#element').textContent
);
console.log(text);
await browser.close();
process.exit(0);
})();