在使用浏览器中的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
}
}
这是代码和输出不起作用。请注意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!
}
}
唯一的区别是该行的评论/取消注释。 该错误似乎来自angular2-polyfills.js和system.src.js
我用过&#39; tsd&#39;安装所有的打字。他们看起来都很正确,我的编辑Atom在高速公路上有智能感。*类型很好。
可能出现的问题?:
使用AutobahnJS v0.9.9但类型似乎适用于v0.9.6
-> I can't see this being a real problem
&#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合作(但目前只是在婴儿的步骤)。
任何帮助都将非常感谢....
答案 0 :(得分:0)
好吧,我现在最终得到了这个工作,并且在向AutobahnJS和Angular 2服务方面取得了一些的进展。你可以参考我的plunker:
[plunker](https://plnkr.co/edit/Dgipr76Rbhgh31PH4pmM)
然而,我仍然很困难。问题是我不能简单地“调用”一个函数(此函数将继续执行并执行Autobahn session.call(...)方法),该函数返回一个值。例如,我想做一些简单的事情:
var x = myMessageService.DoFunct1( someParameter );