Javascript SystemJS没有';t正确加载RxJS
我在使用SystemJS(0.19.47)正确加载RxJS时遇到问题 基本上我有一些打字稿Javascript SystemJS没有';t正确加载RxJS,javascript,systemjs,jspm,Javascript,Systemjs,Jspm,我在使用SystemJS(0.19.47)正确加载RxJS时遇到问题 基本上我有一些打字稿 import {BehaviorSubject} from "rxjs"; let subject = new BehaviorSubject(4); 这将传输到JavaScript System.register(["rxjs"], function (exports_1, context_1) { "use strict"; var __moduleName = context_
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加载的所有其他东西似乎都很好,因为我可以在“default”键下看到BehaviorSubject,我知道它实际上正在加载。我只是不明白为什么RxJS不工作。尝试从“RxJS/Rx”导入{BehaviorSubject}代码> 或
您正在正确导入RxJS。例如:
// import.ts
import {BehaviorSubject} from "rxjs";
let subject = new BehaviorSubject(4);
console.log(subject);
当编译为JS时,您可以将其加载到节点
(显然取决于您的目录结构):
所以问题是为什么您认为BehaviorSubject
应该在一些“default”属性下,因为RxJS包没有默认的导出
从你问题中的标签来看,你似乎在使用
jspm
,但你在帖子中没有提到它,所以问题可能在那里,而不是在SystemJS中。我也有类似的问题。下面的代码不起作用,因为可观察的未定义
import { Observable } from 'rxjs/Observable';
let obs = Observable.create((observer) => observer.next(1));
但是当我像这样更改JS文件中的代码时
obs = Observable_1.default.Observable.create(...)
然后一切正常。我也有同样的问题
解决方法是将systemjs更改为以前的版本之一。
就我而言,0.19.27确实有效。请尝试我的设置:
tsconfig.json
"compilerOptions": {
"module": "commonjs",
...
}
“模块”:“系统”
在我的经验中工作不好
ts
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
谢谢,尽管这似乎还不行。当它只存在于Rx_1.default.BehaviorSubject()上时,它只会变为尝试调用新Rx_1.BehaviorSubject(),谢谢,但它与上面的相同,它位于“default”下,而不是它试图从中访问它的根对象。尽管您的第二个建议是从“RxJs”导入{BehaviorSubject}失败,因为“RxJs”没有映射到SystemJS中的任何内容。进一步解释为什么这个答案对提问者有效会很有帮助。由于问题的性质,仅更改导入语句不太可能解决此问题(他正在接收模块,但看起来不正确)。此外,第一次导入意味着
BehaviorSubject
是一个命名的导出,但正在从命名的导出文件请求它,这在构造良好的模块中也会失败(例如,BehaviorSubject.js中的export default…
),我在0.19.47
中没有遇到此问题,只有当我升级到0.20.x
时,这个问题才会出现——对于任何看到这篇文章的人,这里都会讨论这个问题
obs = Observable_1.default.Observable.create(...)
"compilerOptions": {
"module": "commonjs",
...
}
import { BehaviorSubject } from 'rxjs/BehaviorSubject';