nodejs模块不导出函数

时间:2012-10-09 08:59:18

标签: node.js

我遇到了Nodejs应用程序的问题。 我有两个不同的应用程序正在使用共享库,它位于node_modules中的一级。所以我有这个结构./app1/app.js./app2/app.js./node_modules/shared.libs/index.js

shared.libs还安装了一些其他模块,如mongoose,redis等。还有一些mogoose模型,其中包含其他功能。所有这些都是从index.js这样导出的:

exports.async = require('async');
exports.config = require('./config');
exports.utils = require('./lib/utils');

然后在应用程序中我导入它们:

var libs = require('shared.libs');
var config = libs.config;

所以在这段代码之后我可以使用来自该共享库的config。 这部分过去和现在都很好。但现在我需要在这个库的顶部添加额外的层(阅读:为这两个应用程序提供更多统一的界面)。 我试图做的是将一些函数添加到共享库的index.js中,然后使用这些函数导出整个对象。但每当我尝试调用以前导入的(var libs = require('shared.libs');}个对象时,它都会说libs未定义。

我在这里做错了什么?

我通常希望保持其他代码相同,所以我不需要在任何地方替换require部分,但同时提供共享库中的其他功能,这些功能将从导入的{{ {1}}对象。

1 个答案:

答案 0 :(得分:6)

这绝对有效:

module.exports = {
  async: require('async'),
  config: require('./config'),
  utils: require('./lib/utils'),
  foo: function () {
    return 'bar';
  }
};

参考如下:

var libs = require('shared.libs');

console.log(libs.async);
console.log(libs.config);
console.log(libs.utils);
console.log(libs.foo);
console.log(libs.foo());

令我惊讶的是您的上述评论之一,您收到错误libs is not defined。看起来你应该在shared.libs模块初始化之前有其他未被注意的错误..