2016-06-21 40 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

相關問題