最近node docs表示修改require.paths
是不好的做法。我該怎麼做呢?nodejs - 使用什麼來代替require.paths?
回答
我相信關心的是它可以在運行時反覆修改,而不是僅僅設置。這顯然可能會造成混亂,並導致一些非常奇怪的錯誤。另外,如果單個軟件包修改路徑,則結果將全局應用,這非常糟糕,並且與節點的模塊化特性背道而馳。
如果您有自己的幾個庫路徑,最好的解決方案是在啓動節點之前設置NODE_PATH環境變量。然後,節點在啓動時自動將其選中並自動應用。
我把相關車型在同一個目錄或子目錄和負載使用:
var x = require('./mod/x');
如果它是一個外部模塊,我使用NPM是正確放模塊在NODE_PATH它安裝。
我從來沒有改變require.paths。
對於我的用例,我想在本地'deps /'文件夾中保留特定版本(可能已修補)的本地副本。也許修改NODE_PATH是正確的方法,但這意味着要編寫一個啓動腳本... – nornagon 2011-03-02 03:05:40
您不需要使用相對路徑的模塊:var x = require('../ deps/c'); ?我從來沒有這樣做,但看到了某個地方。 – Carlosedp 2011-03-02 12:58:02
@nornagon我知道這是舊的,但我發現最好的解決方案是將符號鏈接添加到'node_modules'指向'deps /'目錄中的每個模塊。然後你可以參考它們,就好像它們是普通模塊一樣。確保爲每個添加的'node_modules'符號鏈接更新'.gitignore',以便將符號鏈接檢入源代碼管理。這是hacky,但它的作品。 – vaughan 2013-03-30 07:35:47
看看https://github.com/patrick-steele-idem/app-module-path-node;您可以將目錄添加到頂級中的require
語句,而不影響子模塊的路徑。
我一直在使用這個模塊。它工作得很好。 – vaughan 2015-06-10 17:23:20
如果你只需要做一個快速入門,你可以在另一個函數中簡單地包裝require('module')。Module._nodeModulePaths。請記住,以這種方式改變模塊路徑仍然是不好的做法。 – 2017-01-24 15:21:49
- 1. 用什麼來代替div?
- 2. 用什麼來代替$ .mobile.changePage()?
- 3. 用什麼來代替GraphDatabaseSettings.BoltConnector?
- 4. 用什麼來代替sun.net.www.protocol.http.HttpURLConnection.userAgent?
- 5. 用什麼來代替PrintWriter?
- 6. 使用什麼來代替「com.google.appengine.repackaged.com.google.common.hash.Hashing」?
- 7. 使用什麼來代替SimpleJdbcTestUtils?
- 8. 使用什麼來代替QTCaptureDevice?
- 9. 使用什麼來代替$(document).ready();?
- 10. 使用什麼來代替org.jboss.resteasy.client.ClientRequest?
- 11. 使用什麼來代替異常?
- 12. 我可以用什麼來代替char.to_i?
- 13. 我可以用什麼來代替GridView?
- 14. 我可以用什麼來代替KeyChar?
- 15. 我應該用什麼來代替stmt.executeUpdate()?
- 16. 用什麼來代替jQuery模板?
- 17. 我應該用什麼來代替AddPort?
- 18. 我應該用什麼來代替DS.FixtureAdapter
- 19. 安卓:用什麼來代替光標
- 20. 應該用什麼來代替sun.net.www.protocol.jar.Handler?
- 21. 用什麼來代替OnActionExecuting? ASP.NET MVC
- 22. 我可以用什麼來代替?
- 23. 什麼可以用來代替ob_start(「ob_gzhandler」);
- 24. 用什麼來代替CDebuggerTab類?
- 25. 用什麼來代替NSOutlineViewDataSource outlineView:draggingSession:endedAtPoint:operation:?
- 26. 我應該用什麼來代替FlowLayout()?
- 27. 用什麼來代替std :: map :: emplace?
- 28. 我應該用什麼來代替LoadWithPartialName()?
- 29. 我應該用什麼來代替Directory.SetCurrentDirecory?
- 30. 我應該用什麼來代替.__ getslice__?
這將需要一個額外的外部腳本來運行該應用程序,這是不潔的。 – 2012-01-17 22:15:53
爲了防止任何人在這個答案中絆倒,現在這個問題在節點和npm如何朝着沙盒開發方向發展方面已經有點學術了。 – leebriggs 2012-03-13 21:18:07
@leebriggs你能解釋一下你最近的評論嗎? – 2015-08-05 11:26:22