【问题标题】:Error while trying to serialize a Qlik Sense app into a JSON object尝试将 Qlik Sense 应用程序序列化为 JSON 对象时出错
【发布时间】:2020-06-18 20:11:30
【问题描述】:

我正在尝试将 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 不是函数 在对象。 (D:\Users\ddas7071\Desktop\Novartis_TechnicalDetails\myfile.js:12:8) [在 Module._compile (internal/modules/cjs/loader.js:1158:30) 处 90m [39m [90m 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)[39m [Module.load 90m (internal/modules/cjs/loader.js:1002:32)[39m [90m 在 Function.Module._load (internal/modules/cjs/loader.js:901:14)[39m [90m 在 Function.executeUserEntryPoint [作为 runMain] (internal/modules/run_main.js:74:12)[39m [90m at internal/main/run_main_module.js:18:47[39m

虽然我理解错误,但不知道如何解决它。 注意 - 所有先决条件都已得到处理。

【问题讨论】:

    标签: node.js qliksense


    【解决方案1】:

    qsocks 一段时间以来不受支持,serializeapp 在后台使用qsocks

    如果您想连接到 Qlik Engine,请使用官方包 - enigma.js。但是没有JS包(据我所知可以提取对象信息。

    但是……

    有一个 CLI(官方)可以为您执行此操作(我自己还没有测试过)-corectlCorectl 可以选择将应用程序 unbuild 放入单独的 json/yaml 文件中,然后您可以将其置于版本控制之下

    unbuild 命令的说明

    从引擎中的应用程序中提取通用对象、维度、度量、变量、重新加载脚本和连接到单独的 json 和 yaml 文件中。除了来自应用程序的资源之外,还会生成一个 corectl.yml 配置文件,将它们绑定在一起。连接定义中的密码无法从应用程序中导出,因此需要手动处理。通用对象树(例如 Qlik Sense 表)导出为完整的属性树,这意味着在父级的 json(qChildren 数组)中可以找到子对象。

    【讨论】:

    • 谢谢 Stefan,我已经删除了 qsocks。我猜的主要问题是,我没有运行 engine-api-explorer(在 dev-hub 中)。现在我正在尝试按照github.com/mindspank/buildapp 反序列化它(从 JSON 回到 .qvf),但还没有运气。对此有何想法/建议?
    猜你喜欢
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 2020-07-19
    • 2022-01-08
    相关资源
    最近更新 更多