nodeJS中關(guān)于path.resolve()的用法解析
nodeJS關(guān)于path.resolve()用法
path是nodeJS的一個內(nèi)置模塊,可以直接在其他js文件中導(dǎo)入改模塊,代碼如下
var path = require("path") //node的內(nèi)置模塊該模塊導(dǎo)出很多path的方法,如圖1,我們要康康path.resolve() 是怎么用的

圖1 path的方法
path.resolve() 它的作用是拼接路徑,其傳參個數(shù)沒有限制,每個參數(shù)均表示一段路徑
我們看一個例子
var path = require("path");
const p = path.resolve("./","demo","img");
console.log(p);【結(jié)果】第一行是它的運行目錄,第二行是運行結(jié)果

接下來插入另一個變量的概念,__dirname, 在所有情況下,該變量都表示當(dāng)前運行的js文件所在的目錄,它是一個絕對路徑。
例如,我們在 e:\web\code\11webpack\webpack_jwh\09入口和出口\src 這個路徑下的index.js中寫如下代碼
console.log(__dirname);
則輸出的結(jié)果為
![]()
在開發(fā)時,當(dāng)我們使用path.resolve()拼接路徑時,會遇到需要使用絕對路徑的情況,但是當(dāng)我們把項目部署到服務(wù)器時,絕對路徑會發(fā)生變化。
因此,需要一個可以計算的絕對路徑的表達(dá)方式。
有了__dirname,我們就可以解決以下問題。
代碼如下 :
var path = require("path");
const p = path.resolve(__dirname,"demo","img");
console.log(p);這樣不管是什么環(huán)境下,都可以拼接出正確的路徑
![]()
nodejs path.resolve解析路徑異常的坑
作為一個后端,今天又解決的前端問題
問題現(xiàn)場
近期項目中,涉及nodejs自動生成文件,其中用到了shelljs。
各種路徑處理比較多,其中有個典型問題:有人習(xí)慣用path.resolve(),去解析絕對路徑。
過段時間有人用了shelljs的cd方法(類似于模擬shell命令中的cd命令)。這下扯了,項目各種路徑找不到。
觸發(fā)場景
shelljs使用cd命令后,又使用path.resolve,變成了狀態(tài)編程,自己和自己搞不愉快
原因
path.resolve會默認(rèn)把shelljs 所在目錄作為父目錄解析絕對路徑
解決辦法
下面隨便用一種:
- 1、不記錄shell的目錄狀態(tài),即不使用cd命令;
- 2、在項目初始化運行時,獲取根目錄常量,公用該處引用;
- 3、使用path.join()去拼接路徑;
- 4、該用fs的用fs,不夠的再拿shell來補(bǔ)。
問題模擬代碼如下:
let shell = ?require('shelljs');
let path = require("path");
shell.cd("E:\\code");
console.log(path.resolve('test'));
console.log(path.join('test'));打印信息:
E:\code\test
test
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Node.js五大應(yīng)用性能技巧小結(jié)(必須收藏)
本篇文章主要介紹了Node.js五大應(yīng)用性能技巧小結(jié)(必須收藏),小編覺得挺不錯的,現(xiàn)在分享給大家2017-08-08
Electron如何通過ffi-napi調(diào)用dll導(dǎo)出接口
文章介紹了如何在Electron項目中使用ffi-napi模塊調(diào)用DLL文件,并詳細(xì)描述了環(huán)境搭建、安裝Electron和ffi-napi、配置Visual Studio和Python環(huán)境、解決常見問題等步驟,感興趣的朋友跟隨小編一起看看吧2025-02-02
使用Fetch API執(zhí)行GraphQL查詢和變體問題
這篇文章主要介紹了使用Fetch API執(zhí)行GraphQL查詢和變體問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04

