2016-05-19 17 views
0

私は比較的Nodeに慣れていて、ユーザがフォームに姓と名を入力するプロジェクトに置かれていると、サーバは最初の頭文字と最後の名前をファイル名として出力しますジョンスミスはJSmithとして出てくるだろう)。Javascriptで変数をchild_process.execコマンドに渡すことはできますか?

私はそのユーザーの入力を受けて、私のchild_process.execコマンドに入れようとしていますが、変数を認識できないので、名前のないファイルがあります。だからではなくJSmith.txtの、私はちょうど.txt

var name = fields['name'] 
var nameArray = name.split(' ') 
var fileName = nameArray[0].charAt(0) + nameArray[1] 

process.exec("Start of my command here"+fileName+ ".txt", function(error, stdout, stderr){ 
    console.log('done') 
    console.log('stdout:', stdout); 
    console.log('stderr:', stderr); 
}) 

が、これは使用されるように、右機能です取得していますか私は何か他のものを使用する必要がありますか?私は変数が間違って読み込まれていないという問題があるように感じますが、それを渡す方法はわかりません。

+0

コマンドは、私は、問題がある、フィールド[「名前」]がすでに空であることを確信している)=それは空の文字列であるかもしれ、 – Janom

+0

をfilename変数をチェックし、スペースで区切られた引数で実行されます。 – CFrei

+0

'fields ['name']'は空ではありません。これは、ユーザーからの入力に基づく値で戻されます。 – BDD

答えて

0

私はあなたの問題に直面しました。場合

var name = fields['name'] 
var nameArray = name.split(' ') 
var fileName = nameArray[0].charAt(0) + nameArray[1] 
var command = yourCommand + filename + ".txt" #replace yourCommand here 


process.exec(command, function(error, stdout, stderr){ 
    console.log('done') 
    console.log('stdout:', stdout); 
    console.log('stderr:', stderr); 
}) 

はあなたがexecを介して他のファイルにオブジェクト(例えば、アレイ)を渡したい、あなただけ最初にそれを文字列化する必要があります。他のファイル(myModel.pyと呼ばれるこの場合のpythonファイル)で

var myArray = ['beans', 'toast'] 
var stringifiedArray = JSON.stringify(myArray) 
var command = 'python myModel.py ' + stringifiedArray 


process.exec(command, function(error, stdout, stderr){ 
    console.log('done') 
    console.log('stdout:', stdout); 
    console.log('stderr:', stderr); 
}) 

、あなたは再度入力を解析することができます。

input = sys.argv[1] #reading the (first) argument from the shell 
data = json.loads(input) 
関連する問題