Node.js需要caching

我真的被nodejscaching系统卡住了。 我的项目有这样的结构:

Project/ apps/ jobs_processor/ app.js processors.js processors/ libs/ queue_manager.js 

queue_manager.js需要processors.js

 var processors = require("../apps/jobs_processor/processors.js"); 

app.js也需要processor.js

 var processors = require("./processors.js"); 

如果我考虑到文档,我必须有相同的path可能会获得相同的对象,是吗? 如果是这样,我怎么能做到这一点(有相同的path)?

谢谢。

编辑:

如果find解决我的问题。 这是queue_manager.js文件的第一个版本

 var _ = require("lodash"); var Utils = require("./utilities"); var Processors = require("../apps/jobs_processor/processors"); var Logger = require("./logger"); var QUEUES_CACHE = {}; exports.createJob = createJob; exports.getCacheObject = getCacheObject; function createJob(name, data) { var cacheId = name.replace(/ /g, "_"); Logger.info("Cache ID: " + cacheId); if (!QUEUES_CACHE[ cacheId ]) { _.each(Processors, function (processor) { Logger.debug("PROCESSOR NAME: " + processor.name); Logger.debug("JOB NAME: " + name); if (processor.name === name) QUEUES_CACHE[ cacheId ] = processor; }); if (!QUEUES_CACHE[ cacheId ]) throw new Error("Processor for job \"" + name + "\" not found."); } Logger.debug(Object.keys(QUEUES_CACHE)); return QUEUES_CACHE[ cacheId ].queue.add(data); } function getCacheObject() { return QUEUES_CACHE; } 

现在是同一个文件的最后一个版本

 var _ = require("lodash"); var Utils = require("./utilities"); var Logger = require("./logger"); exports.createJob = createJob; function createJob(name, data) { var Processors = require("../apps/jobs_processor/processors"); var processor; _.each(Processors, function (element) { Logger.debug("Processor name: " + element.name); if (element.name === name) processor = element; }); return processor.queue.add(data); } 

每次我调用createJob方法时,都需要processors模块,它是我创build的每个作业处理器的数组。

在caching模块之前,Node.js将parsingpath。
只要你的相对path在磁盘上parsing为相同的绝对path,你就没事了。