2011-02-27 68 views

回答

4

我相信關心的是它可以在運行時反覆修改,而不是僅僅設置。這顯然可能會造成混亂,並導致一些非常奇怪的錯誤。另外,如果單個軟件包修改路徑,則結果將全局應用,這非常糟糕,並且與節點的模塊化特性背道而馳。

如果您有自己的幾個庫路徑,最好的解決方案是在啓動節點之前設置NODE_PATH環境變量。然後,節點在啓動時自動將其選中並自動應用。

+2

這將需要一個額外的外部腳本來運行該應用程序,這是不潔的。 – 2012-01-17 22:15:53

+1

爲了防止任何人在這個答案中絆倒,現在這個問題在節點和npm如何朝着沙盒開發方向發展方面已經有點學術了。 – leebriggs 2012-03-13 21:18:07

+2

@leebriggs你能解釋一下你最近的評論嗎? – 2015-08-05 11:26:22

1

我把相關車型在同一個目錄或子目錄和負載使用:

var x = require('./mod/x'); 

如果它是一個外部模塊,我使用NPM是正確放模塊在NODE_PATH它安裝。

我從來沒有改變require.paths。

+0

對於我的用例,我想在本地'deps /'文件夾中保留特定版本(可能已修補)的本地副本。也許修改NODE_PATH是正確的方法,但這意味着要編寫一個啓動腳本... – nornagon 2011-03-02 03:05:40

+1

您不需要使用相對路徑的模塊:var x = require('../ deps/c'); ?我從來沒有這樣做,但看到了某個地方。 – Carlosedp 2011-03-02 12:58:02

+0

@nornagon我知道這是舊的,但我發現最好的解決方案是將符號鏈接添加到'node_modules'指向'deps /'目錄中的每個模塊。然後你可以參考它們,就好像它們是普通模塊一樣。確保爲每個添加的'node_modules'符號鏈接更新'.gitignore',以便將符號鏈接檢入源代碼管理。這是hacky,但它的作品。 – vaughan 2013-03-30 07:35:47

1

看看https://github.com/patrick-steele-idem/app-module-path-node;您可以將目錄添加到頂級中的require語句,而不影響子模塊的路徑。

+0

我一直在使用這個模塊。它工作得很好。 – vaughan 2015-06-10 17:23:20

+0

如果你只需要做一個快速入門,你可以在另一個函數中簡單地包裝require('module')。Module._nodeModulePaths。請記住,以這種方式改變模塊路徑仍然是不好的做法。 – 2017-01-24 15:21:49

相關問題