Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi everyone,
I am trying to use enigma.js to access the Engine API from within a mashup, but am having an issue when trying to specify the schema.
Following the instructions from here https://github.com/qlik-oss/enigma.js/blob/master/docs/api.md#enigmacreateconfig,
I add the line:
const schema = require('../enigma/schemas/12.170.2.json');
but I get an error message in the console:
I know that the json file is accessible as I can access it directly through my browser, so does anyone have any ideas?
Thanks in advance.
If you are using requirejs you need to make sure you wait unitil the json file is loaded. Assuming you already have a require call off the format:
require([....], function( x, a y){
//lots of code here
});
you could add the schema to the dependency array.
You could also use fetch:
You are using a relative path in your require ('../enigma....)
That would reference from your javascript file that defining the require
Try using a reference to the enigma.js module instead
'enigma.js/schemas/12.170.2.json'
Hi,
Thanks for responding. Unfortunately, I get a similar message (only the reference is different):
If you are using requirejs you need to make sure you wait unitil the json file is loaded. Assuming you already have a require call off the format:
require([....], function( x, a y){
//lots of code here
});
you could add the schema to the dependency array.
You could also use fetch:
Hi Erik,
Thanks for this. fetch() worked for me and I can now use Enigma.js to open an app. For anyone interested, here's the code I used. I will continue to work on this to fulfil my requirement.
$( document ).ready(function()
{
...
...
var config = {
host:window.location.hostname,
port: 82
};
require.config( {
baseUrl: (config.isSecure ? "https://" : "http://" ) + config.host + (config.port ? ":" + config.port : "" ) + config.prefix
} );
schemaLocation = "http://"+config.host + (config.port ? ":" + config.port : "" )+"/enigma/schemas/12.170.2.json";
console.log('schemaLocation',schemaLocation);
fetch(schemaLocation).then(response => response.json()).then(function(schema)
{
prefix = window.location.pathname.substr( 0, window.location.pathname.toLowerCase().lastIndexOf( "/extensions" ) + 1 );
var config = {
host: window.location.hostname,
prefix: prefix,
port: 82,
isSecure: window.location.protocol === "https:"
,identity:strIdentity
};
require.config( {
baseUrl: (config.isSecure ? "https://" : "http://" ) + config.host + (config.port ? ":" + config.port : "" ) + config.prefix
} );
require(['enigma/enigma'],function(enigma)
{
var config = {
host: window.location.hostname,
prefix: prefix,
port: window.location.port,
isSecure: window.location.protocol === "https:"
,identity:strIdentity
};
require.config( {
baseUrl: (config.isSecure ? "https://" : "http://" ) + config.host + (config.port ? ":" + config.port : "" ) + config.prefix + "resources"
} );
require( ['js/qlik'], function ( qlik )
{
var config = {
schema: schema,
url: 'ws://s-agri-qaptest1/app/engineData',
createSocket: url => new WebSocket(url),
suspendOnClose: true,
protocol: { delta: false },
};
const session = enigma.create(config).open().then(function(global)
{
var app = qlik.openApp('4d791990-c8c5-4766-b5ea-e73d36ef7358',config);
});
});
});
});
});