2016-06-02 7 views
0

У меня есть проект A, который имеет файл config.json в своем корне. Проект имеет зависимость от внешнего модуля B, вызывая B.setConfig('./config.json').Требование относительно относительного пути через модули

В то время как внутри B.setConfig(path), если я позвоню fs.existsSync(path), это говорит Ok, файл существует, но называть require(path) терпит неудачу с Cannot find module "./config.json".

Возможно ли отрегулировать относительный путь во внутреннем модуле B, чтобы сделать require работы?

Я бы предпочел не звонить setConfig с полным путем, так как это делает вещи неудобными.

ответ

0

Я нашел его, в конце концов, что, если мы хотим, чтобы относительный путь от модуля A (назовем его remotePath), и использовать его в require в модуле B, а затем, чтобы получить полный путь внутри модуля B мы можем использовать следующий:

var path = require('path'); 
var fullPath = path.join(path.dirname(process.argv[1]), remotePath); 
var moduleInsideA = require(localPath); // this now works 

process.argv[1] дает нам стартовый файл модуль A, из которого мы берем путь к каталогу, а затем присоединиться к нему с удаленным относительным путем, который затем дает нам полный путь.