我遇到了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对象获得的其他功能.
这绝对有效:
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模块初始化之前有其他未被注意的错误..
| 归档时间: |
|
| 查看次数: |
3095 次 |
| 最近记录: |