@ptvalx

Почему выскакивает ошибка внутри библиотеки osmtogeojson при использовании её в preload-е (Electron)?

Код preload.js:
spoiler
const Request = require('request-promise');
const OSMToGeoJSON = require('osmtogeojson');
const DOMParser = require('xmldom').DOMParser;
const Log = console.log;

Request({
    method: 'GET',
    uri: 'https://api.openstreetmap.org/api/0.6/map?bbox=53.97501,57.05107,53.97616,57.05166',
    encoding: 'utf8'
}).then(function (xml_osm) {
    var xml_parser = new DOMParser();
    var xml = xml_parser.parseFromString(xml_osm);
    var geojson = OSMToGeoJSON(xml);
    var json_geojson = JSON.stringify(geojson);
    Log(json_geojson);
}).catch(function (err) {
    Log(err);
});

Изображение ошибки:
spoiler
5eeb3c364025e779565117.png

Часть кода main.js:
spoiler
const {app, BrowserWindow} = require('electron')
const path = require('path')

function createWindow () {
  // Create the browser window.
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
      //nodeIntegration:true
    }
  })

  // and load the index.html of the app.
  mainWindow.loadFile('index.html')

  // Open the DevTools.
   mainWindow.webContents.openDevTools()
}


Выполняю этот код в Electron в главном потоке (main.js) в конце файла - всё работает. Выполняю в preload.js - возникает ошибка в библиотеке osmtogeojson: свойство length = undefined. Хотя весь остальной код выполняется, данные с интернета загружаются. На счёт xmldom не уверен, но ошибок он не выдаёт. Пробовал менять имена констант в главном процессе - не помогло. В preload.js никакого другого кода нет. Мне нужно использовать этот код в "рендеринге". Как его туда пропихнуть, чтобы он не вызывал ошибок? Если я подключаю библиотеки в preload, а код вызываю в рендеринге - ошибка та же.
  • Вопрос задан
  • 18 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ptvalx Автор вопроса
Стал использовать parseXML от jquery - проблема ушла. Но он работал в несколько раз медленнее чем xmldom когда я юзал всё это через консоль. Не знаю, как будет сейчас когда есть реальный DOM и jquery подключен как он на сайтам обычно подключается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы