我遇到了我的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(){}',整個模塊就會停止工作,這是正確的嗎?聽起來不太合適。 –