如何在node.js中正确使用module.exports?

时间:2018-05-05 11:46:54

标签: node.js

所以我试图将数据从一个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来自哪里以及如何解决问题。

请帮助!!!

1 个答案:

答案 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)