Nodejs中fs文件系統(tǒng)模塊的路徑動(dòng)態(tài)拼接的問(wèn)題和解決方案
一、問(wèn)題和解決方案
在使用
fs
模塊操作文件時(shí),如果提供的操作路徑是以./或../
開(kāi)頭的相對(duì)路徑時(shí),很容易出現(xiàn)路徑動(dòng)態(tài)拼接錯(cuò)誤的問(wèn)題
原因: 代碼在運(yùn)行的時(shí)候,會(huì)以執(zhí)行 node 命令運(yùn)行的目錄,動(dòng)態(tài)拼接出被操作文件的完整路徑,也就是說(shuō)這里的
./
和../
參考點(diǎn)是node 命令運(yùn)行的目錄,而不是文件的目錄
解決方案:
- 在使用
fs
模塊操作文件時(shí),直接提供完整的路徑,不要提供./或 ../
開(kāi)頭的相對(duì)路徑,從而防止路徑動(dòng)態(tài)拼接的問(wèn)題- 使用內(nèi)置的
__dirname
(當(dāng)前文件所處的目錄)配合path.join()
動(dòng)態(tài)獲取文件路徑
二、認(rèn)識(shí)__dirname
__dirname
表示當(dāng)前文件所處的目錄
實(shí)例
文件層級(jí)結(jié)構(gòu)
index.js中
// __dirname 表示當(dāng)前文件所處的目錄 console.log(__dirname); //D:\myProject\nodejs\nodejs\文件系統(tǒng)模塊\__dirname
從打印結(jié)果我們可以看出
__dirname
表示當(dāng)前文件所處的目錄
三、path路徑模塊
3.1. 什么是path 路徑模塊
path 模塊
是 Node.js 官方提供的、用來(lái)處理路徑的模塊。它提供了一系列的方法和屬性,用來(lái)滿足用戶對(duì)路徑的處理需求。
path.join()
方法,用來(lái)將多個(gè)路徑片段拼接成一個(gè)完整的路徑字符串path.basename()
方法,用來(lái)從路徑字符串中,將文件名解析出來(lái)
如果要在JavaScript
代碼中,使用path
模塊來(lái)處理路徑,則需要使用如下的方式先導(dǎo)入它
const path = require('path')
3.2. path.join()
使用
path.join()
方法,可以把多個(gè)路徑片段拼接為完整的路徑字符串
注意:
path.join()
中../
代表抵消一層路徑
// 導(dǎo)入path模塊 const path = require("path"); const pathStr = path.join("/a", "/b/c", "../", "./d", "e"); // "../"抵消了/c這一層路徑 console.log(pathStr); //\a\b\d\e
四、path路徑模塊配合__dirname動(dòng)態(tài)獲取文件路徑
實(shí)例
文件層級(jí)結(jié)構(gòu)
成績(jī).txt
index.js
// 導(dǎo)入文件系統(tǒng)模塊 const fs = require("fs"); // 導(dǎo)入path模塊 const path = require("path"); // __dirname當(dāng)前文件所處的目錄 fs.readFile(path.join(__dirname, "/成績(jī).txt"), "utf8", function (err, dataStr) { if (err) return console.log(err.message); //讀取失敗 console.log(dataStr); //讀取成功 });
以上就是Nodejs中fs文件系統(tǒng)模塊的路徑動(dòng)態(tài)拼接的問(wèn)題和解決方案的詳細(xì)內(nèi)容,更多關(guān)于Nodejs fs路徑動(dòng)態(tài)拼接的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Node.js中Sequelize?hook的使用方法小結(jié)
Sequelize?提供了多個(gè)?hook,用于在執(zhí)行數(shù)據(jù)庫(kù)操作時(shí)執(zhí)行一些自定義邏輯,本文為大家整理了一些常用的?Sequelize?hook?列表及其作用,希望對(duì)大家有所幫助2024-02-02node.js中的url.format方法使用說(shuō)明
這篇文章主要介紹了node.js中的url.format方法使用說(shuō)明,本文介紹了url.format的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12使用 Node.js 模擬滑動(dòng)拼圖驗(yàn)證碼操作的示例代碼
本篇文章主要介紹了使用 Node.js 模擬滑動(dòng)驗(yàn)證碼操作的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11Nodejs Express 通過(guò)log4js寫(xiě)日志到Logstash(ELK)
這篇文章主要介紹了Nodejs Express 通過(guò)log4js寫(xiě)日志到Logstash(ELK),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08安裝Node.js并啟動(dòng)本地服務(wù)的操作教程
今天小編就為大家分享一篇安裝Node.js并啟動(dòng)本地服務(wù)的操作教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05nodejs實(shí)現(xiàn)郵件發(fā)送服務(wù)實(shí)例分享
本文給大家講解的是簡(jiǎn)單的使用nodejs搭建郵件發(fā)送服務(wù)的一個(gè)實(shí)例,非常的好用,有需要的小伙伴可以參考下2017-03-03使用puppeteer爬取網(wǎng)站并抓出404無(wú)效鏈接
自動(dòng)化技術(shù)可以幫助我們做自動(dòng)化測(cè)試,本篇文章主要介紹了使用puppeteer爬取網(wǎng)站并抓出404無(wú)效鏈接,可以檢查出無(wú)效鏈接,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12