Angular2无法使用基本的JavaScript库

时间:2016-01-14 02:04:11

标签: javascript angular autobahn

在使用浏览器中的Angular 2中的Javascript库(及其相关的Typescript类型)工作时,angular2-polyfills.js中似乎存在错误。

这是一个奇怪的问题:我似乎能够在库中只有一行代码的情况下构建和运行,但是当我进入第二行时,它会构建,但不会运行?!?

图书馆是AutobahnJS。它是一个单独的.js文件,完全相同的库设计用于浏览器和节点。 它在浏览器和节点中都可以作为普通(非angular2)javascript库完美运行。 我在Node中使用Typescript及其相关的类型(在绝对类型的github页面上有一个example test

我已经遵循了Typescript的基本Angular 2 Quickstart并且没有遇到任何问题。

HERE是可行的代码和输出。注意testAutobahn()中的最后一行被注释掉:

import {Component} from 'angular2/core';
import autobahn = require('autobahn');

@Component({
    selector: 'my-app',
    template: `
        <h1>Project: {{_projectName}}</h1>
    `
})
export class AppComponent {

    constructor() {}

    private _projectName : string = "EXAMPLE7";

    testAutobahn() {
        var options: autobahn.IConnectionOptions =
         { url: 'wss://demo.crossbar.io/ws', realm: 'realm1' };

        //var connection = new autobahn.Connection(options);    //  <- THIS line commented out, app runs fine
    }
}

output-working

这是代码和输出不起作用。请注意testAutobahn()中的最后一行留在:

import {Component} from 'angular2/core';
import autobahn = require('autobahn');

@Component({
    selector: 'my-app',
    template: `
        <h1>Project: {{_projectName}}</h1>
    `
})
export class AppComponent {

    constructor() {}

    private _projectName : string = "EXAMPLE7";

    testAutobahn() {
        var options: autobahn.IConnectionOptions =
         { url: 'wss://demo.crossbar.io/ws', realm: 'realm1' };

        var connection = new autobahn.Connection(options);    //  <- THIS line left in, app not run!
    }
}

output-notworking

唯一的区别是该行的评论/取消注释。 该错误似乎来自angular2-polyfills.js和system.src.js

我用过&#39; tsd&#39;安装所有的打字。他们看起来都很正确,我的编辑Atom在高速公路上有智能感。*类型很好。

可能出现的问题?:

  1. 使用AutobahnJS v0.9.9但类型似乎适用于v0.9.6

    -> I can't see this being a real problem
    
  2. 构建时,Typescript会发出Javascript代码,但确实会出错:
  3.   

    &#34;后续变量声明必须具有相同的类型。变量   &#39; $&#39;必须是&#39; cssSelectorHelper&#39;类型,但这里有类型   &#39; JQueryStatic&#39;&#34;

            -> I have resolved this error by simply commenting out the line   /* declare var $: JQueryStatic; */   in the jquery.d.ts file (I'm not using JQuery anyway) 
    

    根据Typescript的Angular 2 Quickstart使用Typescript v1.7.5,Angular 2 Beta 0以及package.json,tsconfig.json和boot.ts文件。 我的最终目标是让Angular2服务与AutobahnJS合作(但目前只是在婴儿的步骤)。

    任何帮助都将非常感谢....

1 个答案:

答案 0 :(得分:0)

好吧,我现在最终得到了这个工作,并且在向AutobahnJS和Angular 2服务方面取得了一些的进展。你可以参考我的plunker:

[plunker](https://plnkr.co/edit/Dgipr76Rbhgh31PH4pmM)
然而,我仍然很困难。问题是我不能简单地“调用”一个函数(此函数将继续执行并执行Autobahn session.call(...)方法),该函数返回一个值。例如,我想做一些简单的事情:

var x = myMessageService.DoFunct1( someParameter );