簡體   English   中英

每個父目錄是否都需要有自己的node_modules文件夾?

[英]Do each parent directories need to have their own node_modules folder?

我正在使用由節點驅動的應用程序,該節點具有幾個(三個)不同的文件夾。 看起來像這樣:

Client- 
Server-
      -node_modules
         -mongoose
Database-
     -index.js
Config-
    -credentials.js

我已經用所有密碼制作了一個exports對象,並將其放在數據庫文件夾中(通過這種方式,我可以很容易地忽略它,而不必將其檢入任何版本控制中)。

我想知道如果有一種方法可以擁有所有node_modules使用我的serverdatabase服務器的目錄目錄,以便在package.json在我的文件server目錄將包含了“后端”的所有所需的軟件包的我項目。

但是,當我這樣做並嘗試從Database/index.js文件中require(mongoose) ,出現"cannot find module"錯誤。 我嘗試了以下組合,但在每種情況下仍會收到錯誤: require(mongoose) require(../server/mongoose) require(../server/node_modules/mongoose) require(../server/mongoose) require(../server/node_modules/mongoose)

直接在Database目錄中安裝mongoose模塊可以解決此問題,但這意味着我必須在每個目錄中都有一個node_modules文件(以及package.json )。 這是解決此問題的正確方法,還是有更簡單的解決方案?

謝謝

看看下面的文章,您也許會覺得有趣: “ Node.js和require()在哪里尋找模塊?” ,以了解為什么嘗試“要求” mongoose的不同方式實際上不起作用-那是因為您組織代碼的方式(您的node_modules目錄位於Server內部,而Database目錄位於/ -下根目錄)。

因此,在您的情況下,您必須指定/Database/index.js mongoose的相對文件路徑才能找到您的模塊:

require('../server/node_modules/mongoose');

另一個解決方案(我親自組織我的代碼是這樣的)將在服務器代碼內移動數據庫代碼。 畢竟,這都是后端代碼。

我知道這不是一種優雅的方式,但我對您的情況有建議。

您可以嘗試如下;

var mongoose = require('../server/node_modules/mongoose/index');

我在本地模擬了您的案件,此舉奏效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM