5

在带有 typescript 的 ng2 应用程序上,我使用的是 stompjs,它可以在没有汇总的情况下正常工作。

我正在导入它:

import {Stomp} from "stompjs"

运行汇总后,我得到“例外:未定义 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;
}
4

1 回答 1

2

利用import * as Stomp from "stompjs"

于 2016-11-10T20:24:36.627 回答