2017-04-04 2 views
2

Ich verwende Webpack 1, um eine externe js-Datei zu importieren, die im AMD-Modulmuster geschrieben ist, und zwar von einem Produkt namens Qlik, das Visualisierungen erstellt.Verwendung von Qlik mit Webpack 1

Das Projekt verwendet Winkel fullstack Yeoman Generator, so dass die webpack Konfigurationsdatei ist: https://github.com/angular-fullstack/generator-angular-fullstack/blob/master/templates/app/webpack.make.js

Der Versuch, so etwas wie dies in einer webpack Umgebung arbeiten zu erhalten: https://gist.github.com/mindspank/905294636006b3b530a0#file-index-js-L19

Die Datei Ich mag würde zu importieren und verwenden: https://sense-demo.qlik.com/resources/js/qlik.js

Ich habe Dinge wie scriptjs versucht, es zu laden, aber Webpack kann es nicht lösen.

$script('https://sense-demo.qlik.com/resources/assets/external/requirejs/require.js',() => { 
    require.config = { 
     baseUrl: 'https://sense-demo.qlik.com/resources' 
    } 

    require(['js/qlik'], qlik => { 
     let app = qlik.openApp(...); 
    } 
}); 
// throws Module not found: Error: Cannot resolve module 'js/qlik' 

Ich habe auch versucht, es lokal zu dem Projekt hinzufügen und es in webpack Referenzierung:

config.externals = { 
    'qlik' : 'commonjs2 ./client/assets/js/qlik' 
} 

usage: 
require(['qlik'], qlik => { 
    console.log(qlik); 
}); 
// throws Uncaught ReferenceError: require is not defined 

oder

config.resolve = { 
    root: [ 
     path.join(__dirname, ('/client/assets/js')) 
    ] 
}; 
// throws tons of errors similar to: 
ERROR in ./client/assets/js/qlik.js 
Module not found: Error: Cannot resolve module 'cm.matchbrackets' in \client\assets\js 

Mein Problem ist, ich weiß nicht, wie man Verwenden Sie dieses externe Skript über das Webpack. Es kann 'js/qlik' nicht auflösen, wenn es in scriptjs ausgeführt wird und die qlik-Skripts gespeichert und lokal hinzugefügt wurden, war nicht besser.

Jede Hilfe würde sehr geschätzt werden!

Antwort

0

Vielleicht könnte das helfen?

Wir verwenden Webpack 2 und Angular2 (mit Typoskript) und löste es durch Qlik der require.js in der HTML-Datei, einschließlich und dann auf den globalen Bereich wie diese Referenzierung:

const requireJs = (<any>window).requirejs; 

const requireJsConfig = { 
    host: <url>, 
    prefix: '/', 
    port: <port>, 
    isSecure: true 
}; 

const qlikConfig = { 
    appId: <appId>, 
    objectId: <objectId> 
}; 

requireJs.config({ 
    baseUrl: (requireJsConfig.isSecure ? 'https://' : 'http://') + requireJsConfig.host + (requireJsConfig.port ? ':' + requireJsConfig.port : '') + requireJsConfig.prefix + 'resources' 
}); 

requireJs(['js/qlik'], function (qlik) { 
    let const = qlik.openApp(qlikConfig.appId, requireJsConfig); 
    app.getObject(<container-div>, qlikConfig.objectId); 
}); 
Verwandte Themen