2016-06-21 37 views
0

我正在开发nodejs上的微服务体系结构。 我移动了'核心'功能来分离git仓库,并且每个'服务'都将该核心添加为npm依赖项。Nodejs需要来自外部文件夹的模块

在服务我使用的核心为

require('core/module1'); 

在这种情况下的NodeJS需要从node_modules“核心”,它确定了生产,但发展我想采取“核心”从外部文件夹不是从node_modules。

我的主要想法 - 做'核心'的变化,并立即得到'服务'的结果。

我不能使用NODE_PATH来指定外部'core'文件夹,因为我现在已经使用它了。

我发现解决方案使用'app-module-path'模块将其他目录添加到Node.js模块搜索路径中。

if(isDevelopment()){ 
    require('app-module-path').addPath('path_to_core_folder'); 
} 

它的工作解决方案,但也许你可以建议一些更清晰的方法?

我的文件夹结构

- core 
    module1 

- service1 
    -index.js 
    -node_modules 
     -core 

感谢。

回答

0

任何一个工作。如果您需要('modulename')并且它存在于您的node_modules文件夹中,它将从那里加载。如果你想从另一个文件夹或从主文件夹加载,你需要做require('./ modulename“),它会在当前文件夹中查找它,或者你可以require('./ my_modules/modulename' ),它将用于子文件夹

+1

节点不会在主文件夹中寻找模块,为此你需要明确告诉节点在主文件夹中寻找模块,要做到这一点,你需要(require './mymodule')'而不是'require('mymodule')'。第二个版本总是会在'node_modules'中寻找模块,第二个例子也一样,它必须是'require('./ my_modules/modulename')' – slebetman

+0

@Neekoy我知道了,但在我的情况下,为了开发,我希望nodejs解析不存在于主服务文件夹中的文件夹的核心。 –

+0

Slebetman实际上是正确的,它需要点我错过了答案,我编辑了m y回应正确的信息。 – Neekoy

相关问题