導航:首頁 > 編程語言 > nodejs變數絕對路徑

nodejs變數絕對路徑

發布時間:2023-09-19 08:08:40

『壹』 nodejs中require的路徑是一個文件夾時發生了什麼

在引用文件模塊的時候後要加上文件的路徑:/.../.../xxx.js表示回絕對路徑答、./xxx.js表示相對路徑(同一文件夾下的xxx.js),../表示上一級目錄。
如果既不加/.../、../又不加./的話,則該模塊要麼是核心模塊,要麼是從一個node_moles文件夾載入。

『貳』 nodejs調用文件時為什麼前面加點和斜杠

點和斜杠 表示路徑前綴。寫完整路徑(絕對路徑)是一件繁瑣的事情,所以大家都喜歡用相對路徑表示(也就是點和斜杠作為前綴),例如:./app/main.js----表示項目文件夾下的app/main.js 文件,而絕對路徑可能是:D:/workplace/testProject/app/main.js。

「./「 這里可以代表 「D:/workplace/testProject/「 從而使得路徑簡化,其實「./」可以代表任何路勁前綴,也就是不用管路徑有多長多深,它都只表示當前項目文件夾下的文件。

『叄』 nodejs安裝不上,怎麼回事

下載nodejs引擎,32bit version或者64bit version
下載最新版的npm zip格式壓縮包:http://nodejs.org/dist/npm/
在硬碟某個位置,如D盤下建立一個文件nodejs,把上面兩個下載的東西都放在這里,npm要解壓。
配置兩個環境變數:一個是PATH上增加node.exe的目錄D:\\nodejs,一個是增加環境變數NODE_PATH,值為D:\\nodejs\\node_moles。

win7環境配置在系統》高級系統設置》高級》環境變數》系統變數中查找PATH,編輯加上D:\\nodejs,再加上NODE_PATH變數和值。
安裝express:打開cmd命令行,使用命令行定位到這Node目錄下,鍵入指令npm install express[安裝express至相對路徑]或npm install express -g[安裝express至絕對路徑]
到這里,你在命令行裡面輸入node -v如果輸出nodejs的版本則安裝成功。

更新nodejs的版本可以在命令行中輸入: npm update npm -g

『肆』 使用 nodejs 批量給文章添加二維碼圖片

大家好,我是前端西瓜哥。

因為最近公眾號沒有漲粉,所以打算給我的個人博客網站(blog.fstars.wang)上的所有文章底部添加公眾號的二維碼。

為此我打算用 nodejs 寫個批量處理文件的簡單腳本。

我的具體需求是這樣的。

文章都是用 markdown 文件寫的,這是一種純文本的文件格式,並且都位於 posts 文件夾下。

現在我們需要將 所有 markdown 文件的末尾都加上我的公眾號二維碼圖片 ,即加上下面這種格式的內容。

其中有個模板文件,不需要添加圖片,所以我們要設置一個 黑名單

此外 有些文章已經加了該圖片,我們也需要將這些文章排除在外 ,防止文章出現兩張相同圖片。同時也能防止不小心多次執行腳本,導致不可逆的修改。

我們先看完整的代碼

我們先設置好要用到的幾個變數,然後將它們全都放到文件開頭。

放到開頭是為了讓我們在需要時快速修改,符合相關代碼高內聚原則。如果這些變數流散在代碼邏輯中,當我們要改配置時,就要找上半天。

這里我引入了 nodejs 內置的 fs 庫。fs 指的是文件系統(File System),fs 庫就是專門用來處理文件的這么一個庫。

fs/promise 則是fs 的 promise 版,將原來 fs 方法的回調參數移除,然後返回一個 promise。

我們就用這個 promise 版的 fs,因為它能寫出同步形式的代碼,可讀性會更好。

fs.readdir() 方法能夠讀取目錄內容,返回一個字元串數組,裡面是所有的文件名。

接下來我們就去遍歷這個數組。這里有個 初學者容易犯的錯誤,就是會去使用 forEach 方法。

因為 forEach 是 for 循環的一層封裝,會執行傳入的回調函數。但 forEach 的這個函數並不是 async 函數,所以是無法等待 await 方法執行完的。

async 函數其實是挺新的特性,forEach 則是存在了很長時間,當時 forEach 並沒有考慮 async 這種東西,為了兼容,以後也不會。

所以你需要使用原生的 for 循環方法。for 和 for...of 都可以。

然後我們檢查一下文件名是否在黑名單中,如果在,跳過此輪循環,直接進入下一輪。

然後我們要將文件名、和它所在的目錄名組合,生成一個絕對路徑。

直接使用文件名是不行的,因為 腳本會以被執行時所在的工作目錄進行路徑計算的,文件名是個相對於指定目錄的相對路徑,相對工作目錄不一定是正確的。

接著是使用 fs.readFile 讀取文件內容,記住要將 encoding 設置為 'utf8',否則你會拿到一個二進制的內容。

如果文件中已經有圖片了,就跳過。

否則在文件末尾通過 fs.appendFile 方法添加圖片內容。

腳本寫好了,我們准備執行了。

首先為了可以吃後悔葯,我強烈建議你想將文件通過版本控制軟體(如 git),先存一個檔。當腳本配合得不是很好時,我們可以輕松愉快地回滾到修改前的版本。當然拷貝一份作為備份也行。

總之,備份很重要。

改改配置,然後執行。

成功!

大家可以去我的 blog.fstars.blog 看看,現在所有文章下都有這二維碼圖片了。

『伍』 如何在ubuntu安裝nodejs環境

直接在軟體庫安裝:

sudoapt-getinstallnodejs

『陸』 nodejs編譯後js文件名前綴

Node.js 是一個基於 Chrome V8 引擎的 javaScript 運行環境。
Node與javaScript的區別在於,javaScript的頂層對象是window,而node是global

//這里使用的var聲明的變數不是全局的,是當前模塊下的,用global聲明的表示是全局的
var s = 100;
global.s = 200;
//這里訪問到的s是var生命的
console.log(s); //100
//這里訪問到的才是全局變數
console.log(global.s); //200
模塊:在node中,文件和模塊是一一對應的,也就是一個文件就是一個模塊;每個模塊都有自己的作用域,我們通過var申明的變數並非全局而是該模塊作用域下的。

(2)mole模塊

1、文件查找

1)首先按照載入的模塊的文件名稱進行查找,如果沒有找到,則會帶上 .js、.json 或 .node 拓展名在載入
2)以 '/' 為前綴的模塊是文件的絕對路徑。 例如,require('/home/marco/foo.js') 會載入 /home/marco/foo.js 文件。
3)以 './' 為前綴的模塊是相對於調用 require() 的文件的。 也就是說,circle.js 必須和 foo.js 在同一目錄下以便於 require('./circle') 找到它。
4)當沒有以 '/'、'./' 或 '../' 開頭來表示文件時,這個模塊必須是一個核心模塊或載入自 node_moles 目錄。
5)如果給定的路徑不存在,則 require() 會拋出一個 code 屬性為 'MODULE_NOT_FOUND' 的 Error。

2、mole 作用域

在一個模塊中通過var定義的變數,其作用域范圍是當前模塊,外部不能夠直接的訪問,如果我們想一個模塊能夠訪問另外一個模塊中定義的變數,可以有一下兩種方式:
1)把變數作為global對象的一個屬性,但這樣的做法是不推薦的
2)使用模塊對象 mole。mole保存提供和當前模塊有關的一些信息。
在這個mole對象中有一個子對象exports對象,我們可以通過這個對象把一個模塊中的局部變數對象進行提供訪問。

//這個方法的返回值,其實就是被載入模塊中的mole.exports
require('./02.js');
3、__dirname:當前模塊的目錄名。

例子,在 /Users/mjr 目錄下運行 node example.js:
console.log(__dirname);
// 輸出: /Users/mjr
console.log(path.dirname(__filename));
// 輸出: /Users/mjr
4、__filename:當前模塊的文件名(處理後的絕對路徑)。當前模塊的目錄名可以使用 __dirname 獲取。

在 /Users/mjr 目錄下運行 node example.js:

console.log(__filename);
// 輸出: /Users/mjr/example.js
console.log(__dirname);
// 輸出: /Users/mjr
(3)process(進程)

process 對象是一個全局變數,提供 Node.js 進程的有關信息以及控制進程。 因為是全局變數,所以無需使用 require()。

1、process.argv

返回進程啟動時的命令行參數。第一個元素是process.execPath。第二個元素是當前執行的JavaScript文件的路徑。剩餘的元素都是額外的命令行參數。

console.log(process.argv);
列印結果:

2、process.execPath返回啟動進程的可執行文件的絕對路徑。

3、process.env 返回用戶的環境信息。

在process.env中可以新增屬性:

process.env.foo = 'bar';
console.log(process.env.foo);
可以通過delete刪除屬性:

delete process.env.foo;
console.log(process.env);
在Windows上,環境變數不區分大小寫

4、process.pid 屬性返回進程的PID。

5、process.platform屬性返回字元串,標識Node.js進程運行其上的操作系統平台。

6、process.title 屬性用於獲取或設置當前進程在 ps 命令中顯示的進程名字

7、process.uptime() 方法返回當前 Node.js 進程運行時間秒長

注意: 該返回值包含秒的分數。 使用 Math.floor() 來得到整秒鍾。

8、process.versions屬性返回一個對象,此對象列出了Node.js和其依賴的版本信息。

process.versions.moles表明了當前ABI版本,此版本會隨著一個C++API變化而增加。 Node.js會拒絕載入模塊,如果這些模塊使用一個不同ABI版本的模塊進行編譯。

9、process對象-輸入輸出流

var a;
var b;
process.stdout.write('請輸入a的值: ');
process.stdin.on('data', (chunk) => {
if (!a) {
a = Number(chunk);
process.stdout.write('請輸入b的值:');
}else{
b = Number(chunk);
process.stdout.write('a+b的值:'+(a+b));
process.exit();
}
});

(4)Buffer緩沖器

Buffer類,一個用於更好的操作二進制數據的類,我們在操作文件或者網路數據的時候,其實操作的就是二進制數據流,Node為我們提供了一個更加方便的去操作這種數據流的類Buffer,他是一個全局的類

1、如何創建使用buffer

Buffer.from(array) 返回一個 Buffer,包含傳入的位元組數組的拷貝。
Buffer.from(arrayBuffer[, byteOffset [, length]]) 返回一個 Buffer,與傳入的 ArrayBuffer 共享內存。
Buffer.from(buffer) 返回一個 Buffer,包含傳入的 Buffer 的內容的拷貝。
Buffer.from(string[, encoding]) 返回一個 Buffer,包含傳入的字元串的拷貝。
Buffer.alloc(size[, fill[, encoding]]) 返回一個指定大小且已初始化的 Buffer。 該方法比 Buffer.allocUnsafe(size) 慢,但能確保新創建的 Buffer 不會包含舊數據。
Buffer.allocUnsafe(size) 與 Buffer.allocUnsafeSlow(size) 返回一個指定大小但未初始化的 Buffer。 因為 Buffer 是未初始化的,可能包含舊數據。

// 創建一個長度為 10、且用 01 填充的 Buffer。
const buf1 = Buffer.alloc(10,1);
// 創建一個長度為 10、且未初始化的 Buffer。
// 這個方法比調用 Buffer.alloc() 更快,但返回的 Buffer 實例可能包含舊數據,因此需要使用 fill() 或 write() 重寫。
const buf2 = Buffer.allocUnsafe(10);
const buf3 = Buffer.from([1, 2, 3]);
const buf4 = Buffer.from('tést');
console.log(buf1); //<Buffer 01 01 01 01 01 01 01 01 01 01>
console.log(buf2); //<Buffer 00 00 00 00 08 00 00 00 07 00>
console.log(buf3); //<Buffer 01 02 03>
console.log(buf4); //<Buffer 74 c3 a9 73 74>
2、Buffer對象提供的toString、JSON的使用

1)buf.toString(encoding,start,end)

var bf = Buffer.from('miaov');
console.log(bf.toString('utf-8',1,4)); //iaov
console.log(bf.toString('utf-8',0,5)); //miaov
console.log(bf.toString('utf-8',0,6)); //miaov
2)buf.write(string,offset,length,encoding)
string 要寫入 buf 的字元串。
offset 開始寫入的偏移量。默認 0,這里指的是buffer對象的起始要寫入的位置。
length 要寫入的位元組數。默認為 buf.length - offset。
encoding string 的字元編碼。默認為 'utf8'。
返回: 已寫入的位元組數。

var str = "miaov hello";
var bf = Buffer.from(str);
var bf2 = Buffer.alloc(8);
//從0開始寫入5個
bf2.write(str,0,5);
console.log(bf);
console.log(bf2);
3)buf.toJSON()

const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
const json = JSON.stringify(buf);

console.log(json);
// 輸出: {"type":"Buffer","data":[1,2,3,4,5]}
3、Buffer中靜態方法的使用

1)Buffer.isEncoding(encoding) : 判斷是否是Buffer支持的字元編碼,是則返回true,不是則返回false

console.log(Buffer.isEncoding('utf-8')); //true
2)Buffer.isBuffer(obj) :如果 obj 是一個 Buffer,則返回 true,否則返回 false。

(5)fs(文件系統)

該模塊是核心模塊,需要使用require('fs')導入後使用,該模塊主要用來操作文件

1、fs.open(path, flags, mode, callback)
path:要打開的文件的路徑;
flags:打開文件的方式 讀/寫;
mode:設置文件的模式 讀/寫/執行
callback(err,fd):文件打開以後,在回調函數中做相應的處理,回調函數的兩個參數:
err:文件打開失敗的錯誤保存在err裡面,如果成功err為null
fd:被打開文件的標識

var fs = require('fs');
fs.open('./test.txt','r',function(err,fd){
if(err){
console.log("文件打開失敗");
}else{
console.log("文件打開成功");
}
});

2、fs.openSync(path, flags, mode) :返迴文件描述符。

var fs = require('fs');
console.log(fs.openSync('./test.txt','r')); //3
3、fs.read(fd, buffer, offset, length, position, callback)
從 fd 指定的文件中讀取數據;
buffer 指定要寫入數據的 buffer;
offset 指定 buffer 中開始寫入的偏移量;
length 指定要讀取的位元組數;
position 指定文件中開始讀取的偏移量。 如果 position 為 null,則從文件的當前位置開始讀取;
callback 有三個參數 (err, bytesRead, buffer)

示例:test.txt 中的值為123456789

fs.open('./test.txt','r',function(err,fd){
if(!err){
var bf = Buffer.alloc(5);
fs.read(fd,bf,0,5,0,function(){
console.log(bf.toString()); //12345
})
}
});
4、fs.write(fd, buffer, offset, length, position, callback)
將 buffer 寫入到 fd 指定的文件。
offset 指定 buffer 中要開始被寫入的偏移量,length 指定要寫入的位元組數。
position 指定文件中要開始寫入的偏移量。 如果 typeof position !== 'number',則從當前位置開始寫入。
callback 有三個參數 (err, bytesWritten, buffer),其中 bytesWritten 指定 buffer 中已寫入文件的位元組數。

var fs = require('fs');

fs.open('./test.txt','r+',function(err,fd){
if(!err){
var bf = Buffer.alloc(5);
fs.read(fd,bf,0,5,0,function(){
console.log(bf.toString()); //12345
});
var bf = Buffer.from('test數據');
fs.write(fd,bf,0,10,0);
fs.write(fd,'測試數據2',10,'utf-8');

}
});
fs.write(fd, string, position, encoding, callback)
將 string 寫入到 fd 指定的文件。 如果 string 不是一個字元串,則會強制轉換成字元串。
position 指定文件中要開始寫入的偏移量。 如果 typeof position !== 'number',則從當前位置開始寫入。
encoding 指定字元串的編碼。
callback 有三個參數 (err, written, string),其中 written 指定字元串中已寫入文件的位元組數。 寫入的位元組數與字元串的字元數是不同的。

5、fs.exists(path,callback)檢查指定路徑的文件或者目錄是否存在
fs.appendFile(path, data, callback):將數據追加到文件,如果文件不存在則創建文件。

//檢查文件是否存在
var fs = require('fs');
var filename = './test2.txt';
fs.exists(filename,function(isExists){
if(!isExists){
fs.writeFile(filename,'miaov',function(err){
if(err){
console.log("文件創建失敗");
}else{
console.log("文件創建成功");
}
});
}else{
fs.appendFile(filename,'-leo',function(err){
if(err){
console.log("文件內容追加失敗");
}else{
console.log("文件內容追加成功");
}
})
}
});
(6)前端項目自動化構建

1、創建myProject項目文件以及對應的文件夾

var projectData ={
'name':'myProject',
'fileData':[
{
'name':'css',
'type':'dir'
},{
'name':'js',
'type':'dir'
},{
'name':'images',
'type':'dir'
},{
'name':'index.html',
'type':'file',
'content' : '<html>\n\t<head>\n\t\t<title>title</title>\n\t</head>\n\t<body>\n\t\t<h1>Hello</h1>\n\t</body>\n</html>'
}
]
};

var fs = require('fs');

if(projectData.name){
// 創建項目文件夾
fs.mkdirSync(projectData.name);
var fileData = projectData.fileData;
if(fileData && fileData.length){
fileData.forEach(function(file){
//文件或文件夾路徑
file.path = './'+projectData.name +'/'+ file.name;
//根據type類型創建文件或文件夾
file.content = file.content || '';

switch(file.type){
case 'dir':
fs.mkdirSync(file.path);
break;

case 'file':
fs.writeFileSync(file.path,file.content);
break;
default:
break;
}

});
}

}
2、自動打包多個文件

var fs = require('fs');
var filedir = './myProject/dist';

fs.exists(filedir,function(isExists){
if(!isExists){
fs.mkdirSync(filedir);
}
fs.watch(filedir,function(ev,file){
//只要有一個文件發生了變化,我們就需要對文件夾下的所有文件進行讀取、合並
fs.readdir(filedir,function(err,dataList){
var arr = [];
dataList.forEach(function(file){
if(file){
//statSync查看文件屬性
var info = fs.statSync(filedir + '/' +file);
//mode文件許可權
if(info.mode === 33206){
arr.push(filedir + '/' +file);
}
}
});
//讀取數組中的文件內容
var content = '';
arr.forEach(function(file){
var c = fs.readFileSync(file);
content += c.toString()+'\n';
});
//合並文件中的內容
fs.writeFileSync('./myProject/js/index.js',content);

})

});
});

(7)使用node進行web開發

1、搭建一個http的伺服器,用於處理用戶發送的http請求

//載入一個http模塊
var http = require('http');
//通過http模塊下的createServer創建並返回一個web伺服器對象
var server = http.createServer();
//開啟 HTTP 伺服器監聽連接,只有調用了listen方法以後,伺服器才開始工作
server.listen(8000,'localhost');
//伺服器是否正在監聽連接
server.on('listening',function(){
console.log("listening..........");
});
//每次接收到一個請求時觸發,每個連接可能有多個請求(在 HTTP keep-alive 連接的情況下)。
server.on('request',function(){
res.write('<p>hello</p>');
res.end();
});
2、request方法有兩個參數:request、response

1)request:http.IncomingMessage的一個實例,獲取請求的一些信息,如頭信息,數據等
httpVession:使用的http協議的版本
headers:請求頭信息中的數據
url:請求的地址
method:請求的方式

2)response:http.ServerResponse的一個實例,可以向請求的客戶端輸出返回響應
write(chunk,encoding):發送一個數據塊到相應正文中
end(chunk,encoding):當所有的正文和頭信息發送完成以後調用該方法告訴伺服器數據已經全部發送完成了,這個方法在每次完成信息發送以後必須調用,並且是最後調用。
statusCode:該屬性用來設置返回的狀態碼
setHeader(name,value):設置返回頭信息
writeHead(statusCode,reasonPhrase,headers)這個方法只能在當前請求中使用一次,並且必須在response.end()之前調用

3、使用fs模塊實現行為表現分離

var http = require('http');
var url = require('url');
var fs = require('fs');

var server = http.createServer();
//html文件的路徑
var htmlDir = __dirname + '/html/';
server.on('request',function(request,response){
var urlStr = url.parse(request.url);
//根據pathname匹配對應的html文件
switch(urlStr.pathname){
case '/':
sendData(htmlDir + 'index.html',request,response);
break;
case '/user':
sendData(htmlDir + 'user.html',request,response);
break;
case '/login':
sendData(htmlDir + 'login.html',request,response);
break;
default:
//處理其他情況
sendData(htmlDir + 'err.html',request,response );
break;
}
});

function sendData(file,request,response){
//讀取文件,存在則返回對應讀取的內容,不存在則返回錯誤信息
fs.readFile(file,function(err,data){
if(err){
response.writeHead(404,{
'content-type':'text/html;charset=utf-8'
});
response.end('<h1>頁面不存在</h1>')
}else{
response.writeHead(200,{
'content-type':'text/html;charset=utf-8'
});
response.end(data);
}
})
}
server.listen(8000,'localhost');

『柒』 開發中用nodejs做了哪些方面的工作

Node.js使用Mole模塊去劃分不同的功能,以簡化應用的開發。Moles模塊有點像C++語言中的類庫。每一個Node.js的類庫都包含了十分豐富的各類函數,比如http模塊就包含了和http功能相關的很多函數,可以幫助開發者很容易地對比如http,tcp/udp等進行操作,還可以很容易的創建http和tcp/udp的伺服器。
要在程序中使用模塊是十分方便的,只需要如下:
在這里,引入了http類庫,並且對http類庫的引用存放在http變數中了。這個時候,node.js會在我們應用中搜索是否存在node_moles的目錄,並且搜索這個目錄中是否存在http的模塊。如果node.js找不到這個目錄,則會到全局模塊緩存中去尋找,用戶可以通過相對或者絕對路徑,指定模塊的位置,比如:
var myMole = require('./myMole.js');
模塊中包含了很多功能代碼片斷,在模塊中的代碼大部分都是私有的,意思是在模塊中定義的函數方法和變數,都只能在同一個模塊中被調用。當然,可以將某些方法和變數暴露到模塊外,這個時候可以使用exports對象去實現。

『捌』 nodejs怎麼在指定文件夾下運行

一、挖坑 & 掉坑:
緣起一段這樣的代碼:
fs.readFile('./docs/use.md', function (err, buffer) {
if (err) {
return console.log('error: ', err);
}

console.log('OK');
});

本地運行時一切 OK,線上部署時卻死活找不到 ./docs/use.md 這個文件,後來才發現是因為線上啟動應用時不是從當前目錄啟動了,不過為什麼啟動腳本的位置也會影響這個路徑呢,且往下看。
二、填坑:
Node 中的文件路徑大概有 __dirname, __filename, process.cwd(), ./ 或者 ../,前三個都是絕對路徑,為了便於比較,./ 和 ../ 我們通過 path.resolve(『./』)來轉換為絕對路徑。
先看一個簡單的栗子:
假如我們有這樣的文件結構:
app/
-lib/
-common.js
-model
-task.js
-test.js
在 task.js 里編寫如下的代碼:
var path = require('path');console.log(__dirname);console.log(__filename);console.log(process.cwd());console.log(path.resolve('./'));

在 model 目錄下運行 node task.js 得到的輸出是:
/Users/guo/Sites/learn/app/model.js/Users/guo/Sites/learn/app/model.js/task.js/Users/guo/Sites/learn/app/model.js/Users/guo/Sites/learn/app/model.js

然後在 app 目錄下運行 node model/task.js,得到的輸出是:
/Users/guo/Sites/learn/app/model.js/Users/guo/Sites/learn/app/model.js/task.js/Users/guo/Sites/learn/app
/Users/guo/Sites/learn/app

那麼,不好意思不是問題來了~T_T,我們可以得出一些膚淺的結論了:
__dirname: 總是返回被執行的 js 所在文件夾的絕對路徑
__filename: 總是返回被執行的 js 的絕對路徑
process.cwd(): 總是返回運行 node 命令時所在的文件夾的絕對路徑
./: 跟 process.cwd() 一樣、一樣、一樣的嗎?
我明明記得在 require(『../lib/common』) 里一直都是各種相對路徑寫,也沒見報什麼錯啊,我們還在再來個栗子吧,還是上面的結構,』model/task.js』 里的代碼改成:
var fs = require('fs');var common = require('../lib/common');

fs.readFile('../lib/common.js', function (err, data) { if (err) return console.log(err);
console.log(data);
});

在 model 目錄下運行 node task.js,一切 Ok,沒有報錯。然後在 app 目錄下運行 node model/task.js,然後很果斷滴報錯了:
那麼這下問題真的都是來了,按照上面的理論,在 app 下運行時,../lib/common.js 會被轉成 /Users/guo/Sites/learn/lib/common.js,這個路徑顯然是不存在的,但是從運行結果可以看出 require(『../lib/common』) 是 OK 的,只是 readFile 時報錯了。
那麼關於 ./ 正確的結論是:
在 require() 中使用是跟 __dirname 的效果相同,不會因為啟動腳本的目錄不一樣而改變,在其他情況下跟 process.cwd() 效果相同,是相對於啟動腳本所在目錄的路徑。
三、總結:
只有在 require() 時才使用相對路徑(./, ../) 的寫法,其他地方一律使用絕對路徑,如下:
// 當前目錄下
path.dirname(__filename) + 『/test.js』;
// 相鄰目錄下
path.resolve(__dirname, 『../lib/common.js』);
四、參考鏈接:
What is the difference between __dirname and ./ in node.js
nodejs API
以上:smile:。

閱讀全文

與nodejs變數絕對路徑相關的資料

熱點內容
小米手機怎麼上移動網路連接失敗怎麼辦 瀏覽:598
win10系統打開java 瀏覽:479
全日制編程什麼意思 瀏覽:447
筆記本創建區域網怎麼傳文件 瀏覽:871
怎樣查看id密碼 瀏覽:647
贛州極客晨星少兒編程怎麼樣 瀏覽:690
覺醒年代哪個app可以免費觀看 瀏覽:830
如何關閉win10觸摸屏幕 瀏覽:761
蘋果142不能傳文件 瀏覽:128
如何看歷史底部數據 瀏覽:230
怎麼在電腦上下軟體或安裝app 瀏覽:798
qq頭像電影截圖情侶 瀏覽:87
安卓的網路位置設置在哪 瀏覽:973
編程俠官網如何登錄 瀏覽:484
借貸王app怎麼樣 瀏覽:552
qq黑鑽手機怎麼開通 瀏覽:465
dnf85版本爆ss視頻 瀏覽:514
gitlog前一個版本 瀏覽:718
蘋果6手機屏幕周邊多出一圈黑色 瀏覽:131
phpword插件 瀏覽:264

友情鏈接