问题
I'm trying to load axios in chromium using puppeteer, the code is as follows:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless:false})
const page = await browser.newPage()
await page.goto('https://httpbin.org/get')
await page.evaluate(async () => {
var script = document.createElement('script');
script.setAttribute('src','https://unpkg.com/axios@0.21.0/dist/axios.min.js');
document.head.appendChild(script);
var r = await axios.get('https://httpbin.org/get')
console.log(r)
})
})()
But when I try to execute axios.get
it returns Evaluation failed: ReferenceError: axios is not defined
. What's the issue here?
回答1:
Use page.addScriptTag for this:
await page.goto('https://example.com');
await page.addScriptTag({ url: 'https://unpkg.com/axios@0.21.0/dist/axios.min.js' });
const data = await page.evaluate(async () => {
const response = await axios.get('https://httpbin.org/get')
return response.data; // <-- this is important: the whole response cannot be returned
});
来源:https://stackoverflow.com/questions/65332062/how-to-load-script-in-puppeteer