2017-08-15 84 views
-1

我有一個碼頭容器,將2個節點項目合併爲一個。項目A是statsd project,項目B是一個postgres後端項目,使用npm包pg寫入postgres數據庫。我有兩個單獨的回購A和B.然後,我將它們複製到泊塢窗圖像中的Dockerfile分別如下所示:npm安裝2個項目在一個碼頭圖像

COPY ./statsd/ /opt/statsd/ 
COPY ./postgres-backend/ /opt/statsd/postgres-backend/ 

然後我從postgres-backend複製的JavaScript文件夾裏面/opt/statsd/backends/泊塢窗。在這個階段,我可以使用自己的package.json規範在/opt/statsd目錄內執行npm install。但是,我的postgres-backend repo有它自己的package.json文件,它指定了它需要的依賴關係(在本例中爲pg)。我嘗試切換到/opt/statsd/postgres-backend目錄並做npm install。那隻能安裝在子目錄中。當我在/opt/statsd目錄中運行statsd.js時,它抱怨沒有找到模塊pg

如何解決這個2 package.json問題的項目?

+0

npm install [email protected] did not work ??? – lopezdp

+2

@lopezdp這樣的工作,但它感覺像一個黑客,因爲postgres後端的package.json是規避的。如果將來還有其他依賴項被添加到postgres-backend項目中呢?我想知道是否有更好的解決方案來處理這種情況。 – breezymri

+1

這是你的解決方案。您必須做的工作是在舊庫的開始時不再支持舊功能時,調試和更新具有依賴關係的新版本。另外請確保在npm命令末尾添加--save以確保它保存到您的項目應用程序中! – lopezdp

回答

1

問題是您的應用程序依賴於特定版本的pg軟件包。我會找到你需要的版本,然後運行:

npm install [email protected] --save 

其中x.x表示版本的應用程序依賴於運行和--save以確保您的依賴在您的package.json文件更新。

你只需要告訴你的應用程序依賴於你的應用程序的版本。 (基本上)...