是否可以将 nodejs stdout 写入以便接收 nodejs stdin`on-data` returns 个单独的段?
Can nodejs stdout be written to such that the receiving nodejs stdin `on-data` returns individual segments?
我有一个 nodejs 脚本在更安全的环境中生成一组对象,然后将结果通过管道传输到 long-运行 应用程序,我希望这也可以提供一种通过以下方式传递可迭代对象的方法让 stringification/parsing 由 js 完成并在我的第一个脚本中保持结构透明。
现在我一直在尝试从我的可迭代对象中创建一个可读流,或者直接用 process.stdout.write()
编写每个部分,但在这两种情况下,用 process.stdin.on('data', (chunk) => do something with chunk
接收它总是会导致所有弦组合在一起。
let env = {
variableString: "somekey",
someIterable: {
someOtherValue: ['more values']
}
}
let streamArr = [];
for (let x in env) {
let y = env[x].replace(/ {4}/g ,'')
streamArr.push(JSON.stringify({[x]:y}))
}
// const readable = new Stream.Readable()
// readable.pipe(process.stdout)
streamArr.forEach(item => process.stdout.write(item))
// Receiving script
process.stdin.setEncoding('utf8');
process.stdin.on('data', (chunk) => {
console.log(chunk)
let i = JSON.parse(chunk);
for (let x in i) {
if(typeof i[x] == 'string') process.env[x] = i[x];
console.log(x)
}
});
process.stdin.on('end', () => {
console.log('end')
});
结束了对这个问题的回避,因为我的数据足够小,我只是使用
将整个对象写入 STDOUT
process.stdout.write(JSON.stringify(env))
然后使用 fs
模块接收 STDIN,因为这是我发现在其他任何运行之前同步使用 STDIN 来初始化环境变量的唯一方法。
const fs = require('fs')
const env = (function () {
let envTmp = fs.readFileSync(0).toString();
envTmp = JSON.parse(envTmp);
return envTmp;
})();
我有一个 nodejs 脚本在更安全的环境中生成一组对象,然后将结果通过管道传输到 long-运行 应用程序,我希望这也可以提供一种通过以下方式传递可迭代对象的方法让 stringification/parsing 由 js 完成并在我的第一个脚本中保持结构透明。
现在我一直在尝试从我的可迭代对象中创建一个可读流,或者直接用 process.stdout.write()
编写每个部分,但在这两种情况下,用 process.stdin.on('data', (chunk) => do something with chunk
接收它总是会导致所有弦组合在一起。
let env = {
variableString: "somekey",
someIterable: {
someOtherValue: ['more values']
}
}
let streamArr = [];
for (let x in env) {
let y = env[x].replace(/ {4}/g ,'')
streamArr.push(JSON.stringify({[x]:y}))
}
// const readable = new Stream.Readable()
// readable.pipe(process.stdout)
streamArr.forEach(item => process.stdout.write(item))
// Receiving script
process.stdin.setEncoding('utf8');
process.stdin.on('data', (chunk) => {
console.log(chunk)
let i = JSON.parse(chunk);
for (let x in i) {
if(typeof i[x] == 'string') process.env[x] = i[x];
console.log(x)
}
});
process.stdin.on('end', () => {
console.log('end')
});
结束了对这个问题的回避,因为我的数据足够小,我只是使用
将整个对象写入 STDOUTprocess.stdout.write(JSON.stringify(env))
然后使用 fs
模块接收 STDIN,因为这是我发现在其他任何运行之前同步使用 STDIN 来初始化环境变量的唯一方法。
const fs = require('fs')
const env = (function () {
let envTmp = fs.readFileSync(0).toString();
envTmp = JSON.parse(envTmp);
return envTmp;
})();