Pesquisa de site

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!