如何在汇总中导入stompjs

时间:2016-10-18 17:35:49

标签: angular typescript rollupjs stompjs

在带有打字稿的ng2应用程序上,我正在使用stompjs,它可以正常运行而无需汇总。

我正在导入它:

import {Stomp} from "stompjs"

运行汇总后我得到" EXCEPTION:Stomp未定义"

我的汇总配置是:

import rollup from 'rollup';
import nodeResolve from 'rollup-plugin-node-resolve';
import commonjs    from 'rollup-plugin-commonjs';


export default {
 entry: 'aot/app/src/boot-aot.js',
 dest: 'dist/bundle.es2015.js', // output a single application bundle
 sourceMap: true,
 useStrict: false,
 format: 'iife',
 treeshake: true,
 plugins: [
  nodeResolve({
    module: true,
    jsnext: true,
    main: true,
    browser: true,
    extensions: ['.js']
  }),
  commonjs({
    include: [
      'node_modules/rxjs/**',
      'node_modules/stompjs/**'
    ],
    namedExports: {
      'node_modules/stompjs/lib/stomp.min.js': [ 'Stomp' ]
    }
  })
 ]
}

stompjs的TypeScript类型定义文件

declare module "stompjs" {

  export interface Client {
    heartbeat: any;

    debug(...args: string[]);

    connect(...args: any[]);
    disconnect(disconnectCallback: () => any, headers?: any);

    send(destination: string, headers?:any, body?: string);
    subscribe(destination: string, callback?: (message: Message) => any, body?: string);
    unsubscribe();

    begin(transaction: string);
    commit(transaction: string);
    abort(transaction: string);

    ack(messageID: string, subscription: string, headers?: any);
    nack(messageID: string, subscription: string, headers?: any);
  }

  export interface Message {
    command: string;
    headers: any;
    body: string;

    ack(headers?: any);
    nack(headers?: any);
  }

  export interface Frame {
    constructor(command: string, headers?: any, body?: string);

    toString(): string;
    sizeOfUTF8(s: string);
    unmarshall(datas: any);
    marshall(command: string, headers?, body?);
  }

  export interface Stomp {
    client: Client;
    Frame: Frame;

    over(ws: WebSocket);
  }

  export default Stomp;
}

1 个答案:

答案 0 :(得分:2)

使用import * as Stomp from "stompjs"