3

我的 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');

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

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

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

我在这里做错了什么?

我通常希望保持其他代码相同,因此我不需要require到处更换零件,但同时提供来自共享库的附加功能,这些功能可从该导入的libs对象中获得。

4

1 回答 1

7

这绝对应该有效:

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模块初始化期间..

于 2012-10-14T20:13:25.083 回答