最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析 NodeJs 的幾種文件路徑

 更新時間:2017年06月07日 09:15:35   作者:青天訣  
本篇文章主要介紹了淺析 NodeJs 的幾種文件路徑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、挖坑 & 掉坑:

緣起一段這樣的代碼:

fs.readFile('./docs/use.md', function (err, buffer) {
  if (err) {
   return console.log('error: ', err);
  }

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

本地運行時一切 OK,線上部署時卻死活找不到 ./docs/use.md 這個文件,后來才發(fā)現(xiàn)是因為線上啟動應用時不是從當前目錄啟動了,不過為什么啟動腳本的位置也會影響這個路徑呢,且往下看。

二、填坑:

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: 總是返回被執(zhí)行的 js 所在文件夾的絕對路徑

__filename: 總是返回被執(zhí)行的 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'); 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • node.js如何自定義實現(xiàn)一個EventEmitter

    node.js如何自定義實現(xiàn)一個EventEmitter

    我們了解到,Node采用了事件驅動機制,而EventEmitter就是Node實現(xiàn)事件驅動的基礎,本文主要介紹了node.js自定義實現(xiàn)EventEmitter,感興趣的可以了解一下
    2021-07-07
  • 詳解Nodejs 通過 fs.createWriteStream 保存文件

    詳解Nodejs 通過 fs.createWriteStream 保存文件

    本篇文章主要介紹了Nodejs 通過 fs.createWriteStream 保存文件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • node.js命令行教程圖文詳解

    node.js命令行教程圖文詳解

    本文先介紹原生的node.js實現(xiàn)命令行交互,了解原生的api,然后通過commander.js和inquirer.js實現(xiàn)一個完整的交互命令行工具。感興趣的朋友跟隨小編一起看看吧
    2019-05-05
  • 如何使用Node.js爬取任意網(wǎng)頁資源并輸出PDF文件到本地

    如何使用Node.js爬取任意網(wǎng)頁資源并輸出PDF文件到本地

    這篇文章主要介紹了使用Node.js爬取任意網(wǎng)頁資源并輸出高質量PDF文件到本地,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,下面小編就來和大家一起學習吧
    2019-06-06
  • node.js配置Token驗證的2種方式總結

    node.js配置Token驗證的2種方式總結

    token驗證,在設計登錄注冊和一些權限接口時發(fā)揮作用,下面這篇文章主要給大家介紹了關于node.js配置Token驗證的2種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • nodejs判斷文件、文件夾是否存在及刪除的方法

    nodejs判斷文件、文件夾是否存在及刪除的方法

    這篇文章主要介紹了nodejs判斷文件、文件夾是否存在及刪除的方法,結合實例形式分析了nodejs基于文件模塊針對文件與文件夾的存在判斷、刪除等操作技巧,需要的朋友可以參考下
    2017-11-11
  • Node.js API詳解之 assert模塊用法實例分析

    Node.js API詳解之 assert模塊用法實例分析

    這篇文章主要介紹了Node.js API詳解之 assert模塊用法,結合實例形式分析了Node.js API中assert模塊基本函數(shù)、功能、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • node指定內存上限簡單代碼實例

    node指定內存上限簡單代碼實例

    NodeJS啟動的應用,內存使用是有上限的,下面這篇文章主要給大家介紹了關于node指定內存上限的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 解決Node.js使用MySQL出現(xiàn)connect ECONNREFUSED 127.0.0.1:3306的問題

    解決Node.js使用MySQL出現(xiàn)connect ECONNREFUSED 127.0.0.1:3306的問題

    這篇文章主要介紹了解決Node.js使用MySQL出現(xiàn)connect ECONNREFUSED 127.0.0.1:3306報錯的相關資料,文中將問題描述的很清楚,解決的方法也介紹的很完整,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • node實現(xiàn)簡單的反向代理服務器

    node實現(xiàn)簡單的反向代理服務器

    本篇文章主要介紹了node實現(xiàn)簡單的反向代理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論

巴林右旗| 利辛县| 桐柏县| 彭州市| 福建省| 额敏县| 科技| 于田县| 南平市| 杭锦后旗| 锦屏县| 林芝县| 南投县| 焦作市| 镇平县| 嵊州市| 云和县| 天祝| 集贤县| 洛阳市| 玉门市| 万荣县| 汉沽区| 搜索| 太仆寺旗| 获嘉县| 万全县| 巨鹿县| 从江县| 南漳县| 清水河县| 宝坻区| 抚州市| 介休市| 阿图什市| 临澧县| 同仁县| 诸暨市| 饶平县| 万荣县| 武川县|