当前位置: 首页 > 知识库问答 >
问题:

node.js - 如何理解 pnpm 的 node 模块解析算法及其软链处理?

年风华
2024-07-29

看 pnpm 官网文档的时候有一个疑惑 https://pnpm.io/zh/symlinked-node-modules-structure
pnpm 这里的 node module resolve 算法怎么理解呢。在 foo 中 require bar,如果说因为 .pnpm/foo@1.0.0/node_modules/bar 是软链所以被忽略的话,根据 node 模块查找算法,不应该开始查找 .pnpm/node_modules 目录(实际不存在)么?如果说 node 发现是软链,会定位到模块的原始文件,resolve 到 .pnpm/bar@1.0.0/node_modules/bar 倒是可以说通了,求问这里该如何理解呢。
image.png

https://meixg.cn/2021/01/25/ln-nodejs/
https://github.com/nodejs/node/issues/3402

共有1个答案

卓俊晖
2024-07-29
It doesn't ignore symlinks when searching for dependencies. It will resolve a dependency from a symlink. But the location of the resolved dependency won't be the symlink but the directory that the symlink points to.

https://github.com/orgs/pnpm/discussions/8347

 类似资料:
  • 本文向大家介绍如何让node运行es6模块文件及其原理详解,包括了如何让node运行es6模块文件及其原理详解的使用技巧和注意事项,需要的朋友参考一下 最新版的 node 支持最新版 ECMAScript 几乎所有特性,但有一个特性却一直到现在都还没有支持,那就是从 ES2015 开始定义的模块化机制。而现在我们很多项目都是用 es6 的模块化规范来写代码的,包括 node 项目,所以,node

  • 本文向大家介绍解析Node.js异常处理中domain模块的使用方法,包括了解析Node.js异常处理中domain模块的使用方法的使用技巧和注意事项,需要的朋友参考一下 NodeJS 提供了 domain 模块,可以简化异步代码的异常处理。在介绍该模块之前,我们需要首先理解“域”的概念。简单的讲,一个域就是一个 JS 运行环境,在一个运行环境中,如果一个异常没有被捕获,将作为一个全局异常被抛出。

  • 本文向大家介绍Linux硬链接与软链接原理及用法解析,包括了Linux硬链接与软链接原理及用法解析的使用技巧和注意事项,需要的朋友参考一下 在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。 硬链接概念 硬链接(hard link, 也称链接)就是一个文件的一个

  • 本文向大家介绍深入理解Node.js的HTTP模块,包括了深入理解Node.js的HTTP模块的使用技巧和注意事项,需要的朋友参考一下 前言 我们知道传统的HTPP服务器会由Aphche、Nginx、IIS之类的软件来担任,但是nodejs并不需要,nodejs提供了http模块,自身就可以用来构建服务器,而且http模块是由C++实现的,性能可靠。其中封装了一个高校的HTTP服务器和一个简单的H

  • 本文向大家介绍深入理解Node中的buffer模块,包括了深入理解Node中的buffer模块的使用技巧和注意事项,需要的朋友参考一下 在Node、ES2015出现之前,前端工程师只需要进行一些简单的字符串或DOM操作就可以满足业务需要,所以对二进制数据是比较陌生。node出现以后,前端面对的技术场景发生了变化,可以深入到网络传输、文件操作、图片处理等领域,而这些操作都与二进制数据紧密相关。 No

  • 本文向大家介绍深入理解node.js http模块,包括了深入理解node.js http模块的使用技巧和注意事项,需要的朋友参考一下 http模块主要用于搭建HTTP服务端和客户端,使用HTTP服务器或客户端功能都必须调用http模块。 创建服务器 对请求进行处理 请求分为两种:get和post,get请求url地址带参数,req.url便能获取参数,而post请求便复杂一些。使用req.on(

  • 这是第一个类MyServlet.java,我使用另一个名为compute.java的代码调用它来计算,它调用函数,整个操作通过bcak端的R代码完成,这个文件的链接在compute类中给出。 一个名为ClassNotFoundException的错误正在中断程序。 MyServlet.java 我在这两行代码中发现了一个错误,特别是

  • 本文向大家介绍node.js中module模块的功能理解与用法实例分析,包括了node.js中module模块的功能理解与用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了node.js中module模块的功能理解与用法。分享给大家供大家参考,具体如下: node.js中使用CommonJS规范实现模块功能,一个单独的文件就是一个单独的模块。通过require方法实现模块间的依赖