我遇到了我的Nodejs应用程序的问题。 我有两个不同的应用程序正在使用共享库,该应用程序位于node_modules的上一级。所以我有这个结构./app1/app.js
,./app2/app.js
和./node_modules/shared.libs/index.js
。nodejs模块不导出功能
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
对象中获得。
显示更多的代码 - 你如何试图导出新的功能,其中是'require'不是工作等 –
@IvanVergiliev我如何'出口'它的代码,以及我如何'需要'是非常多的解释。我怎么能改进它?我试着直接导出函数如'exports.test = function(){console.log(“test”);}',然后从另一个地方'require',同时尝试创建一个实现所有需要函数的新对象, '它。两种方式都不起作用。每当我尝试调用libs.test()时,它都会说我的libs是未定义的。每当我通过节点检查器检查libs对象,它给我相同的输出。 – AlexKey
所以,你只是说只要你有'exports.sth = require(module)',这就好,但如果你还添加'exports.fun = function(){}',整个模块就会停止工作,这是正确的吗?听起来不太合适。 –