javascript - Como incluir uma biblioteca js pura em um projeto Ionic 2 com TypeScript
Eu já vi posts semelhantes a este, mas nenhum me ajudou.
Eu tenho um projeto Ionic 2 e estou usando TypeScript 2 (beta)
Eu pensei que estava entendendo, mas infelizmente ainda acho que não entendo como o Typescript/Browserfy funcionam juntos para incluir os arquivos js reais em app.bundle.js na compilação do Ionic 2.
Desta vez eu quero usar a biblioteca mqtt que não tem arquivo de definição de tipo. Eu instalei a biblioteca js e a vejo no node_modules.
Perto do final de mqtt.js (o arquivo listado como o atributo main no arquivo package.json do pacote node) vejo algumas exports, como
// Expose MqttClient
module.exports.MqttClient = MqttClient;
module.exports.Client = MqttClient;
module.exports.Store = Store;
// Expose servers
module.exports.Server = MqttServer;
module.exports.MqttServer = MqttServer;
module.exports.SecureServer = MqttSecureServer;
module.exports.MqttSecureServer = MqttSecureServer;
// Expose Connection
module.exports.MqttConnection = MqttConnection;
Então eu quero usar este MqttClient em uma das minhas páginas.
Quando eu construo, eu NÃO vejo este MqttClient em app.bundle.js
Se eu adicionar 'node_modules/mqtt/mqtt.js' na pasta ionic-gulp-browserify-typescript no index.js conforme abaixo
var defaultOptions = {
watch: false,
src: ['./app/app.ts', './typings/index.d.ts', 'node_modules/mqtt/mqtt.js' <--- I added this],
outputPath: 'www/build/js/',
Agora, quando olho no app.bundle.js, vejo module.exports.MqttClient=MqttClient; Não vejo MqttServer (então alguns dos exports entram no app.bundle.js, mas outros não!
Pergunta 1 é por que eu não vejo todas as exportações?
Pergunta 2 - a pergunta mais importante é, como posso agora importar/usar isso na minha página Ionic?
Eu tentei adicionar (como sugerido em outro lugar)
declare var MqttClient: any;
e então
let client = new MqttClient();
mas MqttClient está sempre indefinido
Preciso 'exigir' isso usando um loader? Eu pensei que, como estamos usando Typescript/Browserfy, eu não precisaria de um loader (por exemplo, Systemjs)
Qualquer ajuda será muito apreciada! Estou totalmente sem ideia do que fazer aqui!