nodejs模块不导出函数

Ale*_*kiy 3 node.js

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

shared.libs反过来安装了一些其他模块,如猫鼬,redis等.还有一些mogoose模型,其中还有其他功能.所有都是这样导出的index.js:

exports.async = require('async');
exports.config = require('./config');
exports.utils = require('./lib/utils');
Run Code Online (Sandbox Code Playgroud)

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

var libs = require('shared.libs');
var config = libs.config;
Run Code Online (Sandbox Code Playgroud)

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

我在这做错了什么?

我通常希望保持其他代码相同,所以我不需要在require任何地方替换部分,但同时从共享库中提供可从该导入libs对象获得的其他功能.

lrs*_*jng 7

这绝对有效:

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

参考如下:

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());
Run Code Online (Sandbox Code Playgroud)

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