我正在構建一個基本上是node.js模塊的工具。此工具可以全局安裝(使用-g
選項)模塊中有幾個靜態文件用於生成報告。如果模塊在本地調用,我可以參考相對路徑爲./node_modules/<module>/static/filename
的靜態文件。但是當該工具作爲命令調用時,我如何引用靜態文件?我怎樣才能確定工具是作爲本地模塊還是作爲命令調用?確定節點模塊在運行時的位置
1
A
回答
2
使用魔術變量__dirname。它指的是包含腳本文件的目錄。
2
當你的工具被全球的裝機量,通常有在Unix系統上的兩個條目:
/usr/local/lib/node_modules/<module>/
- >包含所有模塊的源文件/usr/local/bin/<script.js>
目錄 - >符號鏈接到您的模塊可執行腳本
因爲節點使用真實路徑(即畢竟符號鏈接已解決)解決相對於當前模塊的路徑,您不必擔心全局安裝和本地安裝之間的差異。
你需要處理的是當前正在運行節點進程的工作目錄。解決方案是根據模塊所在的絕對路徑解析靜態文件的相對路徑,而不是像在示例中那樣假定節點進程將在特定目錄中運行。
有針對兩種方式:
使用
__dirname
(API docs),其中包含當前源文件的目錄名(路徑):var path = require('path'); // assuming this script is in package root directory var staticFile = path.resolve(__dirname, 'static', 'filename'); // if the script is in lib/ subdirectory, then you want to call var staticFile = path.resolve(__dirname, '..', 'static', 'filename');
使用
require.resolve()
,其中返回與致電require()
所使用的文件名完全相同的文件名:// assuming this script is in package root directory var staticFile = require.resolve('./static/filename'); // if the script is in lib/ subdirectory, then you want to call var staticFile = require.resolve('../static/filename');
相關問題
- 1. 如何直接運行節點模塊?
- 2. 確定模塊文件的位置
- 3. 如何使d3js節點位置確定?
- 4. module.js在運行鐵節點時找不到模塊
- 5. 在運行時確定JVM可執行文件的位置
- 6. 節點 - 運行全局安裝的自定義模塊
- 7. 確定cookie何時會與節點請求模塊過期
- 8. C#反思 - 在運行時確定依賴項的位置
- 9. TypeScript - 模塊在運行時未定義
- 10. Npm在不同位置節點上安裝全局模塊js
- 11. 運行npm時設置節點參數
- 12. graphviz - 固定節點位置
- 13. 如何確定本地節點在MPI中的任務位置
- 14. 停止節點到精確的位置
- 15. Axis2運行時位置不正確
- 16. 如何確定塊是否在運行時同步運行
- 17. 在節點js模塊中執行child_process
- 18. 在添加新節點的同時更新節點的位置?
- 19. 如何正確使用節點模塊
- 20. Hdfs:名稱節點塊位置
- 21. 或在anydb-sql節點模塊中運行
- 22. 含量有正確的模塊位置
- 23. 獲取JTree節點的正確行位
- 24. 如何確定在Apache Storm中節點上運行的任務
- 25. 正確的方法來定義外部節點模塊
- 26. 如何在節點模塊
- 27. 在特定位置插入XML節點
- 28. 在給定位置插入節點
- 29. Python運行時確定要加載哪個模塊
- 30. 節點模塊中的並行流程