1

Raspberry PiにNode.jsをインストールし、Meteor.jsリーダーボードの例を実行しようとしています。バンドルしてPiにコピーしました。MONGO_URLとnpmをインストールしたFiberを設定しました(問題が発生した後)。実行しようとすると:

$ node main.js

Maximum call stack size exceeded例外が発生します。

  /home/pi/bundle/server/server.js:143
  }).run();
  ^
  RangeError: Maximum call stack size exceeded

私はでコマンドを実行し、--traceこれを取得しました:

  /home/pi/bundle/server/server.js:143
  1: GetLineNumber+56(this=0x4e92928d <JS Object>, 0x26693f79 <JSMessageObject>) {
  2:  ScriptLocationFromPosition+64(this=0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636, 0x4e9080a1 <true>) {
  3:   ScriptLineFromPosition+60(this=0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636) {
  4:    ScriptLineCount+40(this=0x26693f25 <a Script value = 0x4e953839 <Script>>) {
  4:    } -> 151
  4:    SUB+48(this=151, 1) {
  4:    } -> 150
  4:    ADD+52(this=0, 150) {
  4:    } -> 150
  4:    SAR+48(this=150, 1) {
  4:    } -> 75
  4:    ADD+52(this=75, 1) {
  4:    } -> 76
  4:    SUB+48(this=146, 1) {
  4:    } -> 145
  4:    SUB+48(this=146, 1) {
  4:    } -> 145
  3:   } -> 142
  3:   SUB+48(this=142, 1) {
  3:   } -> 141
  3:   ADD+52(this=4630, 1) {
  3:   } -> 4631
  3:   SUB+48(this=4642, 1) {
  3:   } -> 4641
  3:   charAt+48(this=0x3735a0cd <Very long string[4703]>, 4641) {
  3:   } -> 0x37324625 <String[1]: ;>
  3:   SUB+48(this=4636, 4631) {
  3:   } -> 5
  3:   ADD+52(this=142, 0) {
  3:   } -> 142
  3:   new SourceLocation+40(this=0x26694b99 <a SourceLocation>, 0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636, 142, 5, 4631, 4642) {
  3:   } -> 0x4e908091 <undefined>
  2:  } -> 0x26694b99 <a SourceLocation>
  2:  ADD+52(this=142, 1) {
  2:  } -> 143
  1: } -> 143
  /home/pi/bundle/server/server.js:143
  1: GetSourceLine+56(this=0x4e92928d <JS Object>, 0x26693f79 <JSMessageObject>) {
  2:  ScriptLocationFromPosition+64(this=0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636, 0x4e9080a1 <true>) {
  3:   ScriptLineFromPosition+60(this=0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636) {
  4:    ScriptLineCount+40(this=0x26693f25 <a Script value = 0x4e953839 <Script>>) {
  4:    } -> 151
  3:   } -> 142
  3:   charAt+48(this=0x3735a0cd <Very long string[4703]>, 4641) {
  3:   } -> 0x37324625 <String[1]: ;>
  3:   new SourceLocation+40(this=0x26694ce5 <a SourceLocation>, 0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636, 142, 5, 4631, 4642) {
  3:   } -> 0x4e908091 <undefined>
  2:  } -> 0x26694ce5 <a SourceLocation>
  2:  SourceLocationRestrict+60(this=0x26694ce5 <a SourceLocation>, 0x4e908091 <undefined>, 0x4e908091 <undefined>) {
  3:   SUB+48(this=78, 10) {
  3:   } -> 68
  3:   SUB+48(this=4642, 4631) {
  3:   } -> 11
  2:  } -> 0x4e908091 <undefined>
  2:  SourceLocationSourceText+40(this=0x26694ce5 <a SourceLocation>) {
  3:   substring+64(this=0x3735a0cd <Very long string[4703]>, 4631, 4642) {
  3:   } -> 0x26694d29 <String[11]:   }).run();>
  2:  } -> 0x26694d29 <String[11]:   }).run();>
  1: } -> 0x26694d29 <String[11]:   }).run();>
 }).run();
  1: GetPositionInLine+56(this=0x4e92928d <JS Object>, 0x26693f79 <JSMessageObject>) {
  2:  ScriptLocationFromPosition+64(this=0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636, 0x4e9080b1 <false>) {
  3:   ScriptLineFromPosition+60(this=0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636) {
  4:    ScriptLineCount+40(this=0x26693f25 <a Script value = 0x4e953839 <Script>>) {
  4:    } -> 151
  3:   } -> 142
  3:   charAt+48(this=0x3735a0cd <Very long string[4703]>, 4641) {
  3:   } -> 0x37324625 <String[1]: ;>
  3:   new SourceLocation+40(this=0x26694d71 <a SourceLocation>, 0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636, 142, 5, 4631, 4642) {
  3:   } -> 0x4e908091 <undefined>
  2:  } -> 0x26694d71 <a SourceLocation>
  2:  SourceLocationRestrict+60(this=0x26694d71 <a SourceLocation>, 0x4e908091 <undefined>, 0x4e908091 <undefined>) {
  2:  } -> 0x4e908091 <undefined>
  2:  SUB+48(this=4636, 4631) {
  2:  } -> 5
  1: } -> 5
  1: GetPositionInLine+56(this=0x4e92928d <JS Object>, 0x26693f79 <JSMessageObject>) {
  2:  ScriptLocationFromPosition+64(this=0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636, 0x4e9080b1 <false>) {
  3:   ScriptLineFromPosition+60(this=0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636) {
  4:    ScriptLineCount+40(this=0x26693f25 <a Script value = 0x4e953839 <Script>>) {
  4:    } -> 151
  3:   } -> 142
  3:   charAt+48(this=0x3735a0cd <Very long string[4703]>, 4641) {
  3:   } -> 0x37324625 <String[1]: ;>
  3:   new SourceLocation+40(this=0x26694e7d <a SourceLocation>, 0x26693f25 <a Script value = 0x4e953839 <Script>>, 4636, 142, 5, 4631, 4642) {
  3:   } -> 0x4e908091 <undefined>
  2:  } -> 0x26694e7d <a SourceLocation>
  2:  SourceLocationRestrict+60(this=0x26694e7d <a SourceLocation>, 0x4e908091 <undefined>, 0x4e908091 <undefined>) {
  2:  } -> 0x4e908091 <undefined>
  1: } -> 5
  ^
  1: ToString+40(this=0x4e92928d <JS Object>, 0x4e908091 <undefined>) {
  1: } -> 0x373080bd <String[9]: undefined>
  1: getter+40(this=0x26693e85 <a RangeError>) {
  2:  +40(this=0x4e908091 <undefined>, 0x4e96824d <a RangeError>) {
  3:   FormatMessage+72(this=0x4e908091 <undefined>, 0x26694ed5 <JSMessageObject>) {
  4:    ADD+52(this=0, 1) {
  4:    } -> 1
  4:    ADD+52(this=1, 0) {
  4:    } -> 1
  4:    ADD+52(this=0, 2) {
  4:    } -> 2
  4:    FormatString+64(this=0x4e908091 <undefined>, 0x2669611d <JS array[1]>, 0x26694ed5 <JSMessageObject>) {
  5:     ADD+52(this=0x373082e5 <String[0]: >, 0x59c1f9cd <String[32]: Maximum call stack size exceeded>) {
  5:     } -> 0x59c1f9cd <String[32]: Maximum call stack size exceeded>
  5:     ADD+52(this=1, 0) {
  5:     } -> 1
  4:    } -> 0x59c1f9cd <String[32]: Maximum call stack size exceeded>
  3:   } -> 0x59c1f9cd <String[32]: Maximum call stack size exceeded>
  2:  } -> 0x59c1f9cd <String[32]: Maximum call stack size exceeded>
  1: } -> 0x59c1f9cd <String[32]: Maximum call stack size exceeded>
  RangeError:    1: getter+40(this=0x26693e85 <a RangeError>) {
  1: } -> 0x59c1f9cd <String[32]: Maximum call stack size exceeded>
  Maximum call stack size exceeded

この問題を追跡できる最後の場所は、ファイル内です。

app/packages/mongo-livedata/mongo_driver.js

10行目あたり:

var MongoDB = __meteor_bootstrap__.require('mongodb');

最新のnpm(1.1.50)をインストールし、npmにmongodbをグローバルにインストールしました。私はmongolab.comでホストされているmongodbを指しています。いくつかのレコードを接続して挿入するための簡単なテストを作成しました。Meteorに使用しようとしているのとまったく同じURLを使用し、期待どおりに機能します。

var connect = require('mongodb').connect;
var url = 'mongodb://<user>:<password>@<cloud_id>.mongolab.com:<port>/<database>';
connect(url, function(err, db) {
    db.collection('test', function(err, collection) {
       // Insert 3 records
        for(var i = 0; i < 3; i++) {
          collection.insert({'a':i});
        }
    });
});

トレースメッセージはよくわかりませんが、FormatString呼び出しが例外のトリガーになっているようです。助言がありますか?

アップデート:

私はこれをもう少しデバッグし、ここにとして示されている特定のmongodbモジュールのロードに問題を切り分けましたfilename。しばらくステップスルーすると、モジュールは再帰的にそれ自体を含んでいるように見えます。

break in module.js:311
Watchers:
  0: path = ...
  1: parent = ...
  2: filename = "/home/pi/bundle/server/node_modules/mongodb/lib/mongodb/connection/repl_set.js"
 
 308   var hadException = true;
 309 
 310   try {
 311     module.load(filename);
 312     hadException = false;
 313   } finally {
 314     if (hadException) {
 315       delete Module._cache[filename];
 316     }
 317   }
debug> 
< RangeError: Maximum call stack size exceeded
program terminated
4

3 に答える 3

3

残念ながら、MongoDBが現在ARMアーキテクチャをサポートしているとは思いません。https://jira.mongodb.org/browse/SERVER-1811を参照してください。

ただし、Mongoを別のマシンで実行してドライバーをそれに接続させることも、ラズベリーPIで実行したい場合は、非公式のビルドを試すこともできます。

于 2012-08-19T12:42:40.917 に答える
0

実際、Wilfred Knievelが指摘しているように、MongoDBは現在ARMアーキテクチャをサポートしていません。MongoDBの(非公式の)バイナリを利用できるようにしたので、それらを再コンパイルする必要はありません(非常に長くてトリッキーな手順であるため)。これらのバイナリは、サンプルプログラム(C)とともにここから入手できます。

于 2013-04-28T12:09:07.573 に答える
0

あなたが今私たちの流星ユニバーサルフォークであるかどうかわからない

https://github.com/4commerce-technologies-AG/meteor

しかし、そこではいくつかの問題を取り上げました。また、繊維とモンゴに関するいくつかのエラー。(クローズされた)問題を見て、bintrayでビルド済みのバイナリをチェックしてください。

https://bintray.com/4commerce-technologies-ag/meteor-universal/arm-dev-bundles/1.3.3.1/view#files/arm_dev_bundles

また、サービスを起動するためだけにノードとmongotgzを使用することもできます。

それがトムを助けることを願っています

于 2016-06-22T00:44:23.587 に答える