Ошибка при попытке сериализации приложения Qlik Sense в объект JSON - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь сериализовать приложение Qlik Sense (файл .qvf) в объект JSON. Для этого я передаю файл .qvf в приведенном ниже коде, как указано здесь - https://github.com/mindspank/serializeapp

Основная причина этого упражнения - сохранить JSON в Gitlab для контроля версий поскольку мы не можем сохранить .qvf в Git для контроля версий, так как это двоичный файл.

var qsocks = require('qsocks')
var serializeapp = require('serializeapp')

qsocks.Connect()
.then(global => global.openDoc('Executive D:\Users\ddas7071\Documents\Qlik\Sense\Apps\NewDeb.qvf'))
.then(app => serializeapp(app))
.then(result => console.log(result))
serializeapp = require('serializeapp')
const enigma = require('enigma.js')
const WebSocket = require('ws')

enigma.getService('qix', {
schema: require(`./node_modules/enigma.js/schemas/qix/12.67.2.json`),
session: {
    host: 'localhost',
    port: 4848,
    secure: false
},
createSocket: (url) => new WebSocket(url)
})
  .then(qix => qix.global.openDoc('Executive 
D:\Users\ddas7071\Documents\Qlik\Sense\Apps\NewDeb.qvf'))
   .then(app => serializeapp(app))
   .then(result => console.log(result))

Но во время выполнения кода (в windows) я сталкиваюсь с приведенной ниже проблемой -

D: \ Users \ ddas7071 \ Desktop \ Novartis_TechnicalDetails \ myfile. js: 12 enigma.getAttribute ('qix', {^

TypeError: enigma.getAttribute не является функцией в Object . (D: \ Users \ ddas7071 \ Desktop \ Novartis_TechnicalDetails \ myfile. js: 12: 8) [90 м в Module._compile (внутренний / modules / cjs / loader. js: 1158: 30) [39 м [90 м at Object.Module._extensions .. js (внутренний / modules / cjs / loader. js: 1178: 10) [39 м [90 м при Module.load (внутренний / modules / cjs / loader. js: 1002 : 32) [39 м [90 м в Function.Module._load (внутренний / modules / cjs / loader. js: 901: 14) [39 м [90 м в Function.executeUserEntryPoint [как runMain] (внутренний /modules/run_main.js:74:12)[39m [90 м по внутреннему / main / run_main_module. js: 18: 47 [39m

Хотя я понимаю ошибку, но не знаю, как это сделать решить это. Примечание. Все предварительные условия уже выполнены.

1 Ответ

0 голосов
/ 06 марта 2020

qsocks не поддерживается с некоторых пор, а serializeapp использует qsocks под колпаком.

Если вы хотите подключиться к Qlik Engine, пожалуйста, официальный пакет - enigma. js. Но нет пакета JS (насколько я знаю, который может извлечь информацию об объектах.

Но ...

Есть CLI (официальный), который может сделать это для вас (сам не проверял) - corectl . Corectl имеет возможность отменить сборку приложения в отдельные файлы json / yaml, которые затем можно поместить под контроль версий

Описание команды unbuild

Извлекает объекты generi c, измерения, меры, переменные, скрипт перезагрузки и соединения из приложения в движке в отдельные файлы json и yaml. В дополнение к ресурсам из приложения создается файл конфигурации corectl.yml, который связывает их все вместе. Пароли в определениях соединений не могут быть экспортированы из приложения и, следовательно, должны обрабатываться вручную. Generi c Деревья объектов (например, Qlik Контрольные листы) экспортируются как полное дерево свойств, что означает, что дочерние объекты находятся внутри родительского элемента json (массив qChildren).

...