簡単な問題は何かを扱うが、しばらくそれに固執している。文字列のエンコーディング、パイプ、または完全に何か他のものと関係しているかもしれません。ここでノードの子プロセス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"}
]
任意のアイデア?私のユースケースはこれよりも複雑で、私は自分自身が定義されていない部分を解析するだけでは見えません - 本当にハックのようです。
ありがとうございます!
あなたは命の恩人です。私は明日この答えをチェックし、それが修正されればあなたの答えを受け入れます(これは確かですが、それはかなり意味があります)。素晴らしい洞察力。 –