Je ne sais pas si j'utilise complÚtement indexedDB, veuillez me corriger si nécessaire.
Exemple de code :
'use strict';
const puppeteer = require('puppeteer');
(async function main() {
try {
let browser = await puppeteer.launch({
headless: false,
userDataDir: 'test-profile-dir',
});
let page = await browser.newPage();
await page.goto('https://example.org/');
await page.evaluate(setIDB, 'headfulIDB', 'foo');
await page.close();
await browser.close();
browser = await puppeteer.launch({
headless: true,
userDataDir: 'test-profile-dir',
});
page = await browser.newPage();
await page.goto('https://example.org/');
await page.evaluate(setIDB, 'headlessIDB', 'bar');
await page.close();
await browser.close();
browser = await puppeteer.launch({
headless: false,
userDataDir: 'test-profile-dir',
});
page = await browser.newPage();
await page.goto('https://example.org/');
console.log('Headful mode.');
console.log('Headful IDB: ', await page.evaluate(getIDB, 'headfulIDB'));
console.log('Headless IDB: ', await page.evaluate(getIDB, 'headlessIDB'));
await page.close();
await browser.close();
browser = await puppeteer.launch({
headless: true,
userDataDir: 'test-profile-dir',
});
page = await browser.newPage();
await page.goto('https://example.org/');
console.log('Headless mode.');
console.log('Headful IDB: ', await page.evaluate(getIDB, 'headfulIDB'));
console.log('Headless IDB: ', await page.evaluate(getIDB, 'headlessIDB'));
await page.close();
await browser.close();
} catch (err) {
console.error(err);
}
})();
function setIDB(key, value) {
return new Promise((resolve, reject) => {
const openRequest = indexedDB.open('testIDB', 1);
openRequest.onerror = (err) => { reject(err.target.error); };
openRequest.onupgradeneeded = (event) => { event.target.result.createObjectStore('test'); };
openRequest.onsuccess = (event) => {
const db = event.target.result;
db.onerror = (err) => { db.close(); reject(err.target.error); };
db.transaction('test', 'readwrite')
.objectStore('test')
.put(value, key)
.onsuccess = () => { db.close(); resolve(); };
};
});
}
function getIDB(key) {
return new Promise((resolve, reject) => {
const openRequest = indexedDB.open('testIDB', 1);
openRequest.onerror = (err) => { reject(err.target.error); };
openRequest.onupgradeneeded = (event) => { event.target.result.createObjectStore('test'); };
openRequest.onsuccess = (event) => {
const db = event.target.result;
db.onerror = (err) => { db.close(); reject(err.target.error); };
db.transaction('test', 'readonly')
.objectStore('test')
.get(key)
.onsuccess = (eventGet) => {
const { result } = eventGet.target;
db.close();
resolve(result);
};
};
});
}
Sortir:
Headful mode.
Headful IDB: foo
Headless IDB: undefined
Headless mode.
Headful IDB: undefined
Headless IDB: bar
En supposant que j'ai le mĂȘme problĂšme (c'est sĂ»r que ça sent bon), cela se produit Ă©galement en tĂȘte-Ă -tĂȘte si vous dĂ©finissez manuellement --user-data-dir=/tmp/someFolder/
. Cela pourrait ĂȘtre un cas diffĂ©rent, cependant. Il semble que si je mets Ă jour indexedDB en tĂȘte-Ă -tĂȘte, ferme, puis rouvre en tĂȘte-Ă -tĂȘte, les modifications n'ont pas persistĂ© (donc tĂȘte pleine ne peut pas lire tĂȘte pleine). La mĂȘme chose se produit entre les autres permutations d'appariements : sans tĂȘte - sans tĂȘte, et sans tĂȘte - en tĂȘte, en tĂȘte - sans tĂȘte.
Cela se produit pour le marionnettiste - pas pour une utilisation réelle.
Bonjour, cet article semble avoir été écrit il y a un an, mais je viens de rencontrer cette erreur et j'ai donc trouvé la réponse. Dans mon cas, cela s'est produit parce que j'ai essayé d'exécuter la commande à la page ' about:blank '
Commentaire le plus utile
En supposant que j'ai le mĂȘme problĂšme (c'est sĂ»r que ça sent bon), cela se produit Ă©galement en tĂȘte-Ă -tĂȘte si vous dĂ©finissez manuellement
--user-data-dir=/tmp/someFolder/
. Cela pourrait ĂȘtre un cas diffĂ©rent, cependant. Il semble que si je mets Ă jour indexedDB en tĂȘte-Ă -tĂȘte, ferme, puis rouvre en tĂȘte-Ă -tĂȘte, les modifications n'ont pas persistĂ© (donc tĂȘte pleine ne peut pas lire tĂȘte pleine). La mĂȘme chose se produit entre les autres permutations d'appariements : sans tĂȘte - sans tĂȘte, et sans tĂȘte - en tĂȘte, en tĂȘte - sans tĂȘte.Cela se produit pour le marionnettiste - pas pour une utilisation rĂ©elle.