我无法使用SystemJS(0.19.47)正确加载RxJS
基本上我有一些TypeScript ......
import {BehaviorSubject} from "rxjs";
let subject = new BehaviorSubject(4);
这发生在JavaScript ......
System.register(["rxjs"], function (exports_1, context_1) {
"use strict";
var __moduleName = context_1 && context_1.id;
var rxjs_1, subject;
return {
setters: [
function (rxjs_1_1) {
rxjs_1 = rxjs_1_1;
}
],
execute: function () {
subject = new rxjs_1.BehaviorSubject(4);
}
};
});
但是当它运行时,rxjs_1_1会出现类似下面的内容,所以当它尝试实例化时,rxjs_1.BehaviorSubject它是未定义的,因为它确实应该调用rxjs_1.default.BehaviorSubject。
{
"default": {
"BehaviorSubject": function (_value) {…}
}
}
我使用SystemJS加载的所有其他东西似乎工作正常,因为我可以在"默认"下看到BehaviorSubject。关键,我知道它实际上正在加载。我只是不明白为什么RxJS没有工作。
答案 0 :(得分:1)
尝试import {BehaviorSubject} from "rxjs/Rx";
答案 1 :(得分:1)
我遇到了同样的问题。
解决方法是将systemjs更改为以前的版本之一。 在我的情况下,0.19.27确实有效。
答案 2 :(得分:0)
package servertester;
import java.net.*;
import java.io.*;
import java.util.*;
public class ServerRunnable implements Runnable{
private Socket con;
ServerRunnable(Socket con){
this.con = con;
}
@Override
public void run() {
InputStream in;
try {
StringBuilder str = new StringBuilder();
in = con.getInputStream();
BufferedInputStream bin = new BufferedInputStream(in);
Reader reader = new InputStreamReader(bin);
for(int c = reader.read(); c != -1; c = reader.read()){
str.append((char) c);
}
System.out.println(str);
}catch(NullPointerException n){
System.out.println("np");
}
catch (IOException e) {
System.out.println("io");
}finally{
if(con != null)
try {
con.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
或
import {BehaviorSubject} from "rxjs/BehaviorSubject";
答案 3 :(得分:0)
您正确导入RxJS。例如:
// import.ts
import {BehaviorSubject} from "rxjs";
let subject = new BehaviorSubject(4);
console.log(subject);
当编译为JS时,您可以在node
中加载它(显然取决于您的目录结构):
const SystemJS = require('systemjs');
SystemJS.config({
map: {
'rxjs': './node_modules/rxjs/bundles/Rx.js',
},
});
SystemJS.import('import_01.js');
所以问题是为什么你认为BehaviorSubject
应该在某些"默认"属性,因为RxJS包没有默认导出。
根据您问题中的标记,您似乎正在使用jspm
,但您没有在帖子中提及它,因此可能存在问题,而不是SystemJS中。
答案 4 :(得分:0)
我有类似的问题。以下代码无效,因为Observable 未定义
import { Observable } from 'rxjs/Observable';
let obs = Observable.create((observer) => observer.next(1));
但是当我像这样改变JS文件中的代码时
obs = Observable_1.default.Observable.create(...)
然后一切正常。
答案 5 :(得分:0)
尝试我的设置:
<强> tsconfig.json 强>
"compilerOptions": {
"module": "commonjs",
...
}
根据我的经验, "module": "system"
效果不佳。
<强> TS 强>
import { BehaviorSubject } from 'rxjs/BehaviorSubject';