찾다
웹 프론트엔드JS 튜토리얼node.js_node.js에서 fs.realpath 메서드를 사용하기 위한 지침

방법 설명:

실제 경로를 찾아보세요.

상대 경로는 process.cwd를 사용하여 확인할 수 있습니다.

문법:

코드 복사 코드는 다음과 같습니다.

fs.realpath(경로, [캐시], [콜백(err, 해결된 경로)])

이 메소드는 fs 모듈에 속하므로 사용하기 전에 fs 모듈을 도입해야 합니다(var fs= require(“fs”) )

수신 매개변수:

경로 경로

캐시                            ‐ ‐ ‐ ‐ ‐ 선택적으로 리터럴 매핑된 경로를 사용하여 특정 경로를 강제로 해결하거나 실제 경로 개체를 알기 위해 추가 fs.stat이 필요하지 않도록 할 수 있습니다.

콜백                                                                              

오류 예외

resolvedPath 실제 주소

예:

var 캐시 = {'/etc':'/private/etc'};
fs.realpath('/etc/passwd', 캐시, 함수(err, 해결된 경로) {
if (err) throw err;
console.log(resolvedPath);
});


소스코드:

코드 복사 코드는 다음과 같습니다.

fs.realpath = 함수 realpath(p, 캐시, cb) {
  if (!util.isFunction(cb)) {
    cb = 어쩌면Callback(캐시);
    캐시 = null;
  }
  // p를 절대값으로 설정
  p = pathModule.resolve(p);
  if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
    return process.nextTick(cb.bind(null, null, 캐시[p]));
  }
  var 원본 = p,
      seeLinks = {},
      KnownHard = {};
  // p의 현재 문자 위치
  var pos;
  // 지금까지의 부분 경로(있는 경우 후행 슬래시 포함)
  var 전류;
  // 후행 슬래시가 없는 부분 경로(루트를 가리키는 경우 제외)
  var 베이스;
  // 이전 라운드에서 스캔한 부분 경로(슬래시 포함)
  var 이전;
  시작();
  함수 시작() {
    // 루트 건너뛰기
    var m = SplitRootRe.exec(p);
    위치 = m[0].length;
    전류 = m[0];
    기본 = m[0];
    이전 = '';
    // Windows에서는 루트가 존재하는지 확인합니다. 유닉스에서는 필요하지 않습니다.
    if (isWindows && !knownHard[base]) {
      fs.lstat(base, function(err) {
        if (err) return cb(err);
        알려진 하드[베이스] = true;
        루프();
      });
    } 그 밖의 {
      process.nextTick(LOOP);
    }
  }
  // 경로를 따라 걸어가면서 연결된 경로 부분을 실제 경로 부분으로 교체합니다
  // 값
  함수 LOOP() {
    // 경로 끝을 지나 스캔되면 중지
    if (pos >= p.length) {
      if (캐시) 캐시[원본] = p;
      return cb(null, p);
    }
    // 다음 부분 찾기
    nextPartRe.lastIndex = pos;
    var 결과 = nextPartRe.exec(p);
    이전 = 현재;
    현재 = 결과[0];
    기본 = 이전 결과[1];
    pos = nextPartRe.lastIndex;
    // 심볼릭 링크가 아닌 경우 계속
    if (knownHard[base] || (cache && 캐시[base] === base)) {
      return process.nextTick(LOOP);
    }
    if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
      // 알려진 심볼릭 링크. 다시 통계를 낼 필요가 없습니다.
      return gotResolvedLink(cache[base]);
    }
    return fs.lstat(base, gotStat);
  }
  함수 gotStat(err, stat) {
    if (err) return cb(err);
    // 심볼릭 링크가 아닌 경우 다음 경로 부분으로 건너뜁니다
    if (!stat.isSymbolicLink()) {
      알려진 하드[베이스] = true;
      if (캐시) 캐시[베이스] = 베이스;
      return process.nextTick(LOOP);
    }
    // 이전에 읽지 않았다면 링크를 통계하고 읽습니다
    // 링크 타겟이 알려지면 즉시 gotTarget을 호출하세요
    // dev/ino는 Windows에서 항상 0을 반환하므로 확인을 건너뜁니다.
    if (!isWindows) {
      var id = stat.dev.toString(32) ':' stat.ino.toString(32);
      if (seenLinks.hasOwnProperty(id)) {
        return gotTarget(null, seeLinks[id], base);
      }
    }
    fs.stat(base, function(err) {
      if (err) return cb(err);
      fs.readlink(base, function(err, target) {
        if (!isWindows) visibleLinks[id] = 대상;
        gotTarget(err, target);
      });
    });
  }
  function gotTarget(err, target, base) {
    if (err) return cb(err);
    var receivedLink = pathModule.resolve(이전, 대상);
    if (캐시) 캐시[베이스] = 해결링크;
    gotResolvedLink(resolvedLink);
  }
  함수 gotResolvedLink(resolvedLink) {
    // 링크를 해결한 후 다시 시작하세요
    p = pathModule.resolve(resolvedLink, p.slice(pos));
    시작();
  }
};
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Vercel是什么?怎么部署Node服务?Vercel是什么?怎么部署Node服务?May 07, 2022 pm 09:34 PM

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node.js gm是什么node.js gm是什么Jul 12, 2022 pm 06:28 PM

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

一文解析package.json和package-lock.json一文解析package.json和package-lock.jsonSep 01, 2022 pm 08:02 PM

本篇文章带大家详解package.json和package-lock.json文件,希望对大家有所帮助!

怎么使用pkg将Node.js项目打包为可执行文件?怎么使用pkg将Node.js项目打包为可执行文件?Jul 26, 2022 pm 07:33 PM

如何用pkg打包nodejs可执行文件?下面本篇文章给大家介绍一下使用pkg将Node.js项目打包为可执行文件的方法,希望对大家有所帮助!

分享一个Nodejs web框架:Fastify分享一个Nodejs web框架:FastifyAug 04, 2022 pm 09:23 PM

本篇文章给大家分享一个Nodejs web框架:Fastify,简单介绍一下Fastify支持的特性、Fastify支持的插件以及Fastify的使用方法,希望对大家有所帮助!

node爬取数据实例:聊聊怎么抓取小说章节node爬取数据实例:聊聊怎么抓取小说章节May 02, 2022 am 10:00 AM

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

手把手带你使用Node.js和adb开发一个手机备份小工具手把手带你使用Node.js和adb开发一个手机备份小工具Apr 14, 2022 pm 09:06 PM

本篇文章给大家分享一个Node实战,介绍一下使用Node.js和adb怎么开发一个手机备份小工具,希望对大家有所帮助!

图文详解node.js如何构建web服务器图文详解node.js如何构建web服务器Aug 08, 2022 am 10:27 AM

先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경