2017-08-16 6 views
0

簡単な問題は何かを扱うが、しばらくそれに固執している。文字列のエンコーディング、パイプ、または完全に何か他のものと関係しているかもしれません。ここでノードの子プロセスSpawn:未定義の値を返すStdout

は、問題を示していくつかのコードだ - それはPythonスクリプトを呼び出し、子スポーンです:

const spawn = require('child_process').spawn; 
let py = spawn('python', ['../py-docker-encryption/handle_encrypt.py']); 

let encMsg = {action: 'enc', data: []} 
encMsg.data.push(allArr[0].items.S) 
let dataString; 
py.stdout.on('data', (data) => { 
    dataString += data.toString(); 
}) 
py.stdout.on('end',() => { 
    console.log(dataString) 
}) 
py.stdin.write(JSON.stringify(encMsg)); 
py.stdin.end() 
// py.on('close', (code) => { 
// cb(null, dataString) 
// }) 

Pythonのコードは複雑ですが、私は徹底的にそれをテストしてみた:それは返す暗号化スクリプト、です暗号文を標準出力に出力する。しかし、それは問題ではありません。ボトムライン.on( 'data')パイプのstdoutは正常に戻りますが、スクリプトが終了するか、.on( 'end')が呼び出されるまでに、単一の "undefined"がdataStringの先頭に追加されます文字列。たとえば、これは私のコンソールがある(重要なことのすべては、開始時に定義されていません - 残りは通常の操作である):この上

undefined[{"data": "AYADeJldNsBlMPApbYJydOfQ5msAXwABABVhd3MtY3J5cHRvLXB1YmxpYy1r 
ZXkAREF3aUNDRWRHOTlUUHNYMFlwWVZLVnBPaHFxMDhiQ0NXOUkyWUVocEdTMWV4TkpjV0VxRnlFZ0xa 
dkpIOVVmZEM1QT09AAEAB2F3cy1rbXMATmFybjphd3M6a21zOmV1LWNlbnRyYWwtMTo5MDUwNDk5MjMx 
NjI6a2V5L2Q4NTNhNzdhLTJmMmMtNDRkNy04ZmNjLTE3MzNmZmVjYmM5NwC4AQIBAHg4n+ZTthRASUgK 
QrDeQL96fA+8KdXwWlK3rIBH8nfwGQEln5SRtpBSM1tkyjxWDfoLAAAAfjB8BgkqhkiG9w0BBwagbzBt 
AgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMv+tUKJb0bdkvMe8FAgEQgDuy7Vx1nDBCUUGS 
+GmG5gl7VcFP1e7t0BcSZ3KYeOgZDdZsH3iMXajtPktejPYzmBxFbxigN0ZQLXti2wIAAAAADAAAEAAA 
AAAAAAAAAAAAAADhoAGEpZmeu/1Y+eOqL8OX/////wAAAAEAAAAAAAAAAAAAAAEAAAAEZ0I1VTfw2cHO 
wx7ejXvVx9+vZjsAZzBlAjAw7KDk/iwWADqUfKmjyjKGrEab/bTUXu59A5xA0Db/L5JgCnhqlw3n8MTW 
haVlqmwCMQDKSmZeKXJn0tvDYIYlVY20VwD+HRBTji/P62cREOE89iPbjLOykxeQJyqB3K7eGlA=\n"} 
] 

任意のアイデア?私のユースケースはこれよりも複雑で、私は自分自身が定義されていない部分を解析するだけでは見えません - 本当にハックのようです。

ありがとうございます!

答えて

1

dataString変数の初期値はundefinedです。これを文字列に強制すると(暗黙的に他の文字列と連結して行われる)、nullや他の多くの文字列以外の値と同様に、リテラルワード'undefined'が使用されます。

代わりに、空の文字列に初期化してください。この現象は発生しません。

+0

あなたは命の恩人です。私は明日この答えをチェックし、それが修正されればあなたの答えを受け入れます(これは確かですが、それはかなり意味があります)。素晴らしい洞察力。 –

関連する問題