1

execSyncパッケージを使用して同期シェル機能を取得しようとしています。binding.nodeファイルがないために最初は問題がありましたがnode-gyp、適切なexecSyncディレクトリで実行することで解決しました。execSyncこれで、問題なくノード内の関数を呼び出すことができます。

ただし、me​​teor 内から関数を使用しようとすると、次のエラーが発生します。

Running on: http://localhost:3000/
/usr/lib/meteor/bin/node: symbol lookup error: /home/onur/node_modules/execSync/node_modules/ffi/node_modules/ref/build/Release/binding.node: undefined symbol: _ZNK2v85Value6IsNullEv
Exited with code: 127
Your application is crashing. Waiting for file change.

ノート:

ネットで簡単に調べると、シンボルが V8 ライブラリに属していることがわかりました。

コード

で次のように定義しますMeteor.methods

getpuzzle: function (clu, lo, hi) {
    var require = _meteor_bootstrap__.require;   
    var exec = require('execSync');
    var sudoku_str = exec.stdout(path_sudoku_gen+" "+clu+" "+lo+" "+hi);  
    console.log(sudoku_str); 
    return sudoku_str;                                        
}    

サーバーとクライアント間の相互作用を理解しようとしています。基本的に、私はこれをやろうとしています。クライアント側の関数には、サーバー側で実行される Python スクリプトによって返される文字列が必要です。グローバル変数を使用してダーティ ハックを試みましたが、スクリプトが非同期で実行されるため問題ありませんでした。同期実行なしでこれを行うことはできますか? クライアントとサーバーの相互作用のモデルを完全に把握することはできません。正しい方法があれば、遠慮なく修正してください。

4

1 に答える 1

0

コードを表示していないので、require行が失敗していると思います。標準のnode.jsの代わりに、Meteorラッパーを使用する必要があります

var require = __meteor_bootstrap__.require;
var path = require('path')
于 2013-01-11T03:48:59.630 に答える