我遇到了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}}对象。
答案 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
模块初始化之前有其他未被注意的错误..