4

我只是想实现

https://github.com/Reactive-Extensions/RxJS

到我的节点项目。

当然,有可用的 npm-package,但我看到它更新较少,模块较少,并且只使用了 min. 文件,所以我想使用来自 git 源的 rxjs。

我下载了 RxJS-master 并将目录下的整个文件复制到 ../myProject/lib/rx/

我懂了

这些文件中的rx.node.js

var Rx = require('./rx');
require('./rx.aggregates');
require('./rx.binding');
require('./rx.coincidence');
require('./rx.experimental');
require('./rx.joinpatterns');
require('./rx.testing');
require('./rx.time');
module.exports = Rx;

所以,我的 app.js代码是这样的

var rx = require("./lib/rx/rx.node.js")

function test()
{
    var as = new rx.AsyncSubject()
    setTimeout(function ()
    {
        as.onNext("works!")
        as.onCompleted()
    }, 500)
    return as
}

var a = test().subscribe(function (result)
{
    console.log("Got result: " + result)
})

这会产生如下错误,

.../rx/lib/rx/rx.binding.js:173
    var BehaviorSubject = Rx.BehaviorSubject = (function (_super) {
                          ^
ReferenceError: Rx is not defined
    at .../rx/lib/rx/rx.binding.js:173:27
    at Observable (.../rx/lib/rx/rx.binding.js:14:26)
    at Object.<anonymous> (.../rx/lib/rx/rx.binding.js:18:2)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (.../rx/lib/rx/rx.node.js:3:1)

Process finished with exit code 1

怎么了?


如果我将 rx.node.js修改为

var Rx = require('./rx');
module.exports = Rx;

代码按预期工作,因此显然require - sub modules部分进展不顺利。


谢谢。

4

3 回答 3

4

从最新版本开始修复,我通过此提交删除了有问题的错误版本

NPM 已相应更新以删除 2.1.1 并替换为未损坏的版本。

于 2013-03-29T21:13:53.297 回答
0

这看起来像是您正在运行的构建的问题,我假设它是 2.1.1。我遇到了同样的问题,以下 npm 命令为我修复了它。

npm remove rx
npm install rx@2.1.0

编辑:我看到你正在使用主人。对困惑感到抱歉。此解决方案可能适用于运行 2.1.1 的其他人。

于 2013-03-28T14:06:37.163 回答
-1

我认为你可以做到这一点。如果这个命令:

$ which npm
/usr/local/bin/npm

你可以这样做:

$ npm remove rx
$ npm install -g rx

如果您对“which npm”一无所知,则必须删除带有此问题的节点(最佳答案)并使用 brew(使用 MacOS)或您的包管理器重新安装:

$ brew update
$ brew uninstall node
$ brew install node

你必须使用它:

$ brew postinstall node 

根据对这个问题的讨论。

于 2014-10-30T07:33:25.377 回答