2017-04-04 57 views
2

我使用的WebPack 1,试图导入外部js文件,写在AMD模块的模式,从一个叫Qlik产品,它不可视化。使用Qlik用的WebPack 1

该项目采用角fullstack自耕农发生器,所以的WebPack配置文件是:https://github.com/angular-fullstack/generator-angular-fullstack/blob/master/templates/app/webpack.make.js

试图得到这样一个的WebPack环境中工作: https://gist.github.com/mindspank/905294636006b3b530a0#file-index-js-L19

我想文件导入和使用:https://sense-demo.qlik.com/resources/js/qlik.js

我试过像scriptjs这样的东西来加载它,但webpack无法解决它。

$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' 

我也尝试在本地将它添加到项目,并在的WebPack引用它:

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

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

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 

我的问题是,我不知道该怎么通过webpack使用这个外部脚本。在scriptjs内运行时,它无法解析'js/qlik',保存qlik脚本并在本地添加它们并不会更好。

任何帮助将大大apprciated!

回答

0

也许这可能是帮助吗?

我们使用的WebPack 2和Angular2(与打字稿),并通过在HTML文件Qlik的require.js,然后引用它在全球范围内是这样解决的:

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); 
});