main.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. const http = require('http');
  2. const { app, ipcMain, BrowserWindow } = require('electron');
  3. if (process.argv.length > 3) {
  4. app.setPath(process.argv[2], process.argv[3]);
  5. }
  6. const html = `
  7. <script>
  8. async function main() {
  9. localStorage.setItem('myCat', 'Tom')
  10. const db = indexedDB.open('db-name', 1)
  11. await new Promise(resolve => db.onsuccess = resolve)
  12. await navigator.serviceWorker.register('sw.js', {scope: './'})
  13. }
  14. main().then(() => {
  15. require('electron').ipcRenderer.send('success')
  16. })
  17. </script>
  18. `;
  19. const js = 'console.log("From service worker")';
  20. app.once('ready', () => {
  21. ipcMain.on('success', () => {
  22. app.quit();
  23. });
  24. const server = http.createServer((request, response) => {
  25. if (request.url === '/') {
  26. response.writeHead(200, { 'Content-Type': 'text/html' });
  27. response.end(html);
  28. } else if (request.url === '/sw.js') {
  29. response.writeHead(200, { 'Content-Type': 'text/javascript' });
  30. response.end(js);
  31. }
  32. }).listen(0, '127.0.0.1', () => {
  33. const serverUrl = 'http://127.0.0.1:' + server.address().port;
  34. const mainWindow = new BrowserWindow({ show: false, webPreferences: { webSecurity: true, nodeIntegration: true, contextIsolation: false } });
  35. mainWindow.loadURL(serverUrl);
  36. });
  37. });