![](/img/trans.png)
[英]Using CI for Bitbucket repository - do I need to have node_modules inside my root folder?
[英]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
使用我的server
和database
服務器的目錄目錄,以便在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.