从节点js中的模块返回对象

时间:2016-08-26 09:32:00

标签: javascript node.js rest routes

我是节点js的新手,我正在创建我的第一个REST API。所以我有一个/ module文件夹,我把我的模块和/ routes文件夹放在我的路由中。我实际上是在尝试配置这些路由,其中​​一个导致从.toml文件获取的资源,所以我决定使用从github获取的toml解析模块。无论如何,我的问题相当直截了当: 当我把它放在我的routes.js中时:

app.get('/toml', function(request, response){
var get_params = url.parse(request.url, true).query;
if (Object.keys(get_params).length == 0)
{
var fs = require('fs');
fs.readFile('./path/to/my/contacts.toml', function (err, data) {
var parsed = toml.parse(data);
console.log(parsed);
response.end(JSON.stringify(parsed));
});

我在浏览器中得到了正确的输出(从启动服务器的app.js调用路由),即在JSON对象中转换的toml文件。

然而,当我尝试分离我的代码并创建一个模块contacts.js以便为将来构建我的代码时,我遇到了一个问题:

在routes.js中:

app.get('/toml', function(request, response){
var get_params = url.parse(request.url, true).query;
if (Object.keys(get_params).length == 0)
{
var ret = contacts.json_parse('./path/to/my/contacts.toml');
console.log('toto a la plage');
console.log(ret);
response.setHeader('content-type', 'application/json');
response.end(ret);
}

在contacts.js中:

exports.json_parse = function(file_name) {
var toml = require('toml');
var fs = require('fs');

var output = fs.readFile(file_name, function (err, data) {
var parsed = toml.parse(data);

console.log(parsed);
//console.log(data);
return JSON.stringify(parsed);
});
return output;
}

我在shell中看到了日志,但浏览器中没有任何内容!似乎我试图发送的对象是“未定义的”#39;。我根本得不到它。过去两天我一直坚持这一点。请注意,模块contacts.js包含良好,并与我的routes.js通信正常,因为我将它用于其他功能,它完美地工作。谢谢。

0 个答案:

没有答案