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