execSync
パッケージを使用して同期シェル機能を取得しようとしています。binding.node
ファイルがないために最初は問題がありましたがnode-gyp
、適切なexecSync
ディレクトリで実行することで解決しました。execSync
これで、問題なくノード内の関数を呼び出すことができます。
ただし、meteor 内から関数を使用しようとすると、次のエラーが発生します。
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 スクリプトによって返される文字列が必要です。グローバル変数を使用してダーティ ハックを試みましたが、スクリプトが非同期で実行されるため問題ありませんでした。同期実行なしでこれを行うことはできますか? クライアントとサーバーの相互作用のモデルを完全に把握することはできません。正しい方法があれば、遠慮なく修正してください。