所以我试图将数据从一个node.js脚本正确传递到另一个node.js脚本,并且我有一些错误,我找不到简单的修复...
所以这是传递数据的文件:
//main.js
var exec = require('child_process').exec;
function input() {
exec('ruby user_zipcode.rb', function (err,stdout) {
if (err) {
throw (err)
} else {
var input = stdout;
console.log(input)
}
});
}
module.exports = {'Data':input()};
和应该接收数据的另一个文件:
//wawa.js
var test = require('./main');
console.log(test.Data);
main.js使用这个简单的ruby文件执行子进程:
//user_zipcode.rb
data = '78456'
puts data
当我跑node wawa.js
时,我得到了这个结果:
undefined
78456
我不明白undefined
来自哪里以及如何解决问题。
请帮助!!!
答案 0 :(得分:0)
undefined
来自这句话:
console.log(test.Data);
input()
没有明确表示返回任何内容,因此undefined
就是您所看到的内容。
console.log(input)
就是78456
。
关于
如何解决问题
我假设您希望test.Data
返回ruby脚本的输出。 input()
可以简单地返回一个承诺,
//main.js
var exec = require('child_process').exec;
function input() {
return new Promise((res, rej) => {
exec('ruby user_zipcode.rb', function (err,stdout) {
if (err) {
return rej(err)
}
return res(stdout)
})
})
}
module.exports = {
"Data": input() // this now returns a Promise
};
然后
//wawa.js
var test = require('./main');
test.Data.then(console.log)